webForumDet fria alternativet

antal förekomster av tecken

ASP

8 svar · 355 visningar · startad av Jymdis

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

Jag borde kunna göra det själv men man är väl slö eller nåt efter igår så jag vill ha en funktion för att räkna antal förekomster av ett tecken i en sträng, nån som sitter på en? =)

Medlem sedan juni 200032 967 inlägg
#2

Enklast möjliga:

Function countStuff(strText, strChar)
       tmp = ubound(split(strText, strChar)) -1
       if tmp = -1 then tmp = 0
       countStuff = tmp
End function

Mvh

Medlem sedan maj 200010 687 inlägg
#3

Eller varför inte klara av tomma strängar?

Function countStuff(strText, strChar)
       tmp = ubound(split(strText, strChar)) -1
       if tmp < 0 then tmp = 0
       countStuff = tmp
End function
Medlem sedan aug. 20013 824 inlägg
#4
function CountChr(str, strChar)
     For i to len(str)
          If mod(str,i,1) = strChar then
               IntCount = cInt(IntCount +1)
          End if
     Next
     CountChr = IntCount
End function

'Anropa funktionen CountChr(texten, tecknet)
Response.write CountChr(strTexten, "Ä")
Medlem sedan aug. 20013 824 inlägg
#5

Så kan man ju också göra :e

Medlem sedan mars 20016 260 inlägg
#6

Tackar!

Medlem sedan maj 200010 687 inlägg
#7

Ett annat sätt att göra det:

Function InStrCount(ByVal sString As String, _
    ByVal sString2 As String, _
    Optional ByVal vbCompare As VbCompareMethod = vbTextCompare) As Long
	
	InStrCount = (Len(sString) - Len(Replace(sString, sString2, "", 1, -1, vbCompare))) / Len(sString2)
	
End Function

Vet inte vad som är snabbast av Split och Replace.
Len är i alla fall snabbt. Den behöver inte räkna tecken för tecken, utan längden ligger redan lagrad för textvariabler...

Medlem sedan feb. 200112 078 inlägg
#8

Erik Juhlin skrev:

Ett annat sätt att göra det:

Function InStrCount(ByVal sString As String, _
    ByVal sString2 As String, _
    Optional ByVal vbCompare As VbCompareMethod = vbTextCompare) As Long
	
	InStrCount = (Len(sString) - Len(Replace(sString, sString2, "", 1, -1, vbCompare))) / Len(sString2)
	
End Function

Vet inte vad som är snabbast av Split och Replace.
Len är i alla fall snabbt. Den behöver inte räkna tecken för tecken, utan längden ligger redan lagrad för textvariabler...

I VB, bör tilläggas. Inte VBScript.

Medlem sedan maj 200010 687 inlägg
#9

Ah, Stojan har rätt...
Men behövs inte många förändringar för att det ska funka i VBScript. :)

259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)