Har en kod som splittar en sträng vid i 2 delar vid 2 nollor men nu så har jag sett att den splittar fel när det innehåller 0 nollor på rad. Hjälp tack.
Ex på kod:
300045
30 skall vara en sträng och 45 skall vara en
De två nollorna före 45 skall man splitta via. Hur gör jag?
Okej!
Det skall alltid finnas två nollor i mitten som skall splittas via och inte skall finnas med i nåt värde. Sen före nollorna kan vara 5 siffror och de siffrorna efter kan vara upp till 5 siffror.
Aha. Då är ett krav att den andra delen (siffrorna efter 00) inte får börja med noll och att dubbelnoll inte får förekomma i de nummer du vill ha ut (en ganska svår begränsning).
Hmm, detta kan inte funka heller då det kan vara från 1 till X siffror före dessa 00 och efter dessa 00.
Varför inte? Om nollorna är i mitten så borde det ju funka? Annars kan du ju använda InstrRev() och ta reda på var 00 ligger (bakifrån, så det första talet kan sluta på noll.
Det smartaste lär väl dock vara att använda en separator som faktiskt är en separator...
Det här kanske blir lite omständigt, men det är i alla fall en ordentlig regexp-koll...
<%
sCode = "133700666"
Set oRegExp = New RegExp
oRegExp.Pattern = "^(\d+)00(\d+)$"
If oRegExp.Test(sCode) Then
sMatch1 = oRegExp.Execute(sCode).Item(0).Submatches.Item(0)
sMatch2 = oRegExp.Execute(sCode).Item(0).Submatches.Item(1)
End if
Set oRegExp = Nothing
%>
Det här kanske blir lite omständigt, men det är i alla fall en ordentlig regexp-koll...
<%
sCode = "133700666"
Set oRegExp = New RegExp
oRegExp.Pattern = "^(\d+)00(\d+)$"
If oRegExp.Test(sCode) Then
sMatch1 = oRegExp.Execute(sCode).Item(0).Submatches.Item(0)
sMatch2 = oRegExp.Execute(sCode).Item(0).Submatches.Item(1)
End if
Set oRegExp = Nothing
%>
Problemet är ju att fler än två nollor efter varandra kan existera. I ditt exempel ligger ju heller inte nollorna i mitten varför hela strängen består av ett ojämnt antal tecken.
Svaret på denna fråga är alltså att istället för att användarna matar in valfritt antal siffror före och efter de två nollorna, så måste de mata in ett bestämt antal. Förslagsvis så börjar dessa (idnummer eller vad det nu är) alltid på 1. Addera t.ex. 100000 till alla dessa nummer så slipper du bekymmer med försvinnande nollor.
Då behöver du ingen avgränsare (men det är alltid bra med #) :)
138 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe