webForumDet fria alternativet

bästa sättet att räkna antal förekomster av tecken

ASP

3 svar · 316 visningar · startad av Jymdis

Medlem sedan mars 20016 260 inlägg
Frågan#1

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?

Medlem sedan okt. 20005 273 inlägg
#2

Regexp har en count property ...
http://www.webeye.nu/default2.asp?que=asp/default.asp&exec=asp/artiklar/asp_11.asp

mv icaaq

Medlem sedan dec. 20003 887 inlägg
#3

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
Medlem sedan maj 200010 687 inlägg
#4

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. :)

254 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)