Zur Ermittlung der Anzahl gesuchter String-Bestandteile fiel mir ad-hoc erstmal
![Arrow :arrow:](./images/smilies/icon_arrow.gif)
Hier nachfolgend eine alternative Lösung, mittels
![Arrow :arrow:](./images/smilies/icon_arrow.gif)
Interessanterweise arbeitet dieser Befehl sogar ...
a) case-sensitive, sowie ...
b) als boolean-Ausgabe für Fälle wie 'If str/var in Matchlist',
c) ermöglicht für einen solchen Fall die Verwendung mit ternary operator, und ...
d) kann durch parsen der EOL-chars eine Zeilenanzahl ermitteln.
![Thumbup :thumbup:](./images/smilies/icon_thumbup.gif)
Code: Select all
#SingleInstance, Force
line:="
(
Germany Germany Germany;Berlin
France France France;Paris
Ukraine Ukraine,Kiyw
)"
MsgBox % occ(line,";") ; semi-colon = 2
MsgBox % occ(line,A_Space) ; leerzeichen = 5
MsgBox % occ(line,["er","ra","i"]) ; zeichenkette er + ra + i = 14
MsgBox % occ(line,chr(71)) ; zeichen "G" = 3
MsgBox % occ(line,"germany") ;"germany" = 0
MsgBox % occ(line,"Germany") ;"Germany" = 3
MsgBox % occ(line,"`r`n") ; CRLF = 0
MsgBox % occ(line,"`r") ; CR = 0
MsgBox % occ(line,"`n") ; LF = 2
MsgBox % occ(line) ; zeichen = 76
msg:=occ(line,"Kiyw") ? "yep" : "nope" ;"If var in Matchlist" = yep
MsgBox % msg
if !occ(line,"x") ; 1 (true, da 'nicht vorhandenes x' bestätigt)
ToolTip % "Yep, there is none!"
if occ(line,"x") ; 0 (false, da 'x vorhanden' nicht bestätigt)
ToolTip % "No, there is none" ; wird demnach nicht angezeigt
occ(str, sep:="",oChar:="`n") {
res := StrSplit(str,sep,oChar)
return (sep="") ? res.Count() : res.Count()-1
}
![Cool 8-)](./images/smilies/icon_cool.gif)
Update:
a) durch Verwendung von oChar:="`n" wird das Zählen von 'New-Line' EOL's ('Zeilenendezeichen') abgeschaltet. Woraus sich im Beispiel für die Gesamtzahl an Zeichen 76 anstatt 78 ergibt.
b) mit Übergabe von 'needles' in Array-Schreibweise (Zeile 13) lässt sich im 'haystack' wie für StrSplit() üblich, nach mehreren Zeichen gleichzeitig suchen/zählen.