Jag vill räkna ord, vilket jag löst genom att räkna antal mellanslag + 1.
Men, det blir fel när det finns radbrytningar.
Hämtar orden med en trim-funktion, vilken tar bort inledande/avslutande mellanslag. Har trott att den skulle fixa enter också, men så är inte fallet.
Set objRegExp = New RegExp
objRegExp.Global = True
objRegExp.Pattern = "\s+" 'mellanslag: räknar ej flera flera efter varandra
Set Matches = objRegExp.Execute(orden)
response.write Matches.count + 1
Exempel:
lorem
ipsum
[enter]
ger 3 ord
Trodde mig ha sett en lösning på detta problem, men nej.
Set objRegExp = New RegExp
objRegExp.Global = True
objRegExp.Pattern = "(^\s|\s$)"
Set Matches = objRegExp.Execute(orden)
response.write Matches.count
ger 0 ord
för:
lorem ipsum
Sedan lade jag till å|ö, och IgnoreCase=True.
Och den räknade rätt på åÖÅö också! lorem ipsum å Ö
Sedan krånglade jag till det med lårem ipsöm vilket gav sex ord!
Hur i all sin dar blir det så?
Lite klurande gav att den räknar l+å+rem ips+ö+m=6 st...
Det går säkert att komma undan genom att kontrollera att det inte finns bokstäver före/efter åö.
dim re
set re = new regexp
re.pattern = "\b[^\s]+\b"
re.global = true
dim words
set words = re.execute(orden)
' words.count = antal ord
set re = nothing
Jag körde din senaste kod parallellt med min originalkod, och det fungerar utmärkt! Den fixar radbrytning, och räknar inte med smiliesar, eller binde-/talstreck heller, för den delen.
598 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e