/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
formatering af nummerstreng med regexp
Fra : Rasmus Skov


Dato : 25-03-03 11:46

jeg ønsker at formatere et givent tal på formen 10000000 om til 10.000.000
(der kan optræde forskelligt antal cifre), det er altsammen heltal.

jeg vil gerne ha' hjælp til lidt regexp og lidt vbscript/asp til at putte
omkring.

hvis det kunne give nogle idéer så har jeg tidligere lavet noget ligende men
til clientside javascript:
det kan nok gøres smartere ... men det virker ;)
function formatDot(valueStr){
var regexp = new RegExp("\\B(\\d{3})( |$)");
while (valueStr.search(regexp) >= 0) {
valueStr = valueStr.replace(regexp, " "+"$1");
}
while (valueStr.search(" ") >= 0)
valueStr = valueStr.replace(" ", ".");
return valueStr;
}

jeg er ikke interesseret i forslag der går på at lave asp i javascript.
--
"Only wimps use tape backup. Real men just upload their important stuff on
ftp, and let the rest of the world mirror it." - Linus Torvalds



 
 
Rasmus Skov (25-03-2003)
Kommentar
Fra : Rasmus Skov


Dato : 25-03-03 23:51


> jeg ønsker at formatere et givent tal på formen 10000000 om til 10.000.000
> (der kan optræde forskelligt antal cifre), det er altsammen heltal.
>
> jeg vil gerne ha' hjælp til lidt regexp og lidt vbscript/asp til at putte
> omkring.

efter lidt grublen indså jeg, at det nok faktisk var nemmere (og hurtigere)
at lave det uden regexp.
her er min (knap så flotte) brugbare version; der er lige tilføjet et
regexp-check på om strengen allerede er formateret korrekt:

function formatDot(str)
Set dottet = New RegExp
With dottet
.Pattern = "(^[0-9]{1,3}(\.[0-9]{3})*(\.[0-9]{3})$)"
.IgnoreCase = True
.Global = True
End With
if dottet.Test(str) then
formatDot=str
else
dim return
for i=1 to Len(str)
return = return & Mid(str,i,1)
if (Len(str)-i) mod 3 = 0 and not (Len(str)-i)=0 then return =
return & "." end if
next
formatDot=return
end if
Set dottet = nothing
end function



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste