Enklast möjliga:
Function countStuff(strText, strChar)
tmp = ubound(split(strText, strChar)) -1
if tmp = -1 then tmp = 0
countStuff = tmp
End function
Mvh
8 svar · 355 visningar · startad av Jymdis
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? =)
Enklast möjliga:
Function countStuff(strText, strChar)
tmp = ubound(split(strText, strChar)) -1
if tmp = -1 then tmp = 0
countStuff = tmp
End function
Mvh
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
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, "Ä")
Så kan man ju också göra :e
Tackar!
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...
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 FunctionVet 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.
Ah, Stojan har rätt...
Men behövs inte många förändringar för att det ska funka i VBScript. :)