Regexp har en count property ...
http://www.webeye.nu/default2.asp?que=asp/default.asp&exec=asp/artiklar/asp_11.asp
mv icaaq
3 svar · 316 visningar · startad av Jymdis
Hej!
Vilket är det bästa sättet att räkna antal förekomster av ett tecken i en sträng?
Jag brukar göra det med InStr och lägga till en och köra en loop tills man kommit till slutet (enkelt och dåligt förklarat), men tycker där borde vara nåt bättre sätt?
Regexp har en count property ...
http://www.webeye.nu/default2.asp?que=asp/default.asp&exec=asp/artiklar/asp_11.asp
mv icaaq
Som icaaq säger
Function GetCharCount(strSource, strChr)
Set objRX = New Regexp
objRX.Global = True
objRX.IgnoreCase = False
objRX.Pattern = strChr
Set objMatches = objRX.Execute(strSource)
GetCharCount = objMatches.Count
End Function
strTest = "aaaabababaab"
strChar = "a"
Response.Write strTest & " innehåller " & GetCharCount(strTest, strChar) & " st. " & strChar
Tror inte RegExp är bästa sättet om det bara gäller att räkna förekomster av enkla tecken. Jag hade nog skrivit så här:
Function InStrCount(ByVal sString, ByVal sString2)
InStrCount = (Len(sString) - Len(Replace(sString, sString2, "", 1, -1, 1))) / Len(sString2)
End Function
Enda krävande där är Replacen. Alternativt använda Split tillsammans med UBound. Men då måste man göra en koll så att strängen inte är tom för då blir UBound -1. :)