PDA

Vollständige Version anzeigen : Zeichen in String zählen


myrix
23.09.2003, 16:18
Hi, Hallo

Hab da mal ne Frage,

Wie bekommen ich heraus, welches Zeichen wie oft in einem String enthalten ist.

Beispiel

Im String steht: "Hallo Ihr *da* draussen!"

nun soll der String durch gekämt werden und nach dem Zeichen * (Sternchen) gefandet werden. Als Ausgabe müßte dann jetzt ne 2 (Zwei) erscheinen.
Hat da jemand ne Ahnung, wie der Code dafür heißt?

mit InStr bekomme ich nur die Position des ersten Zeichen heraus (ist ja auch logisch)

Vielen Dank myrix :confused:

MRR
23.09.2003, 16:29
Hi,
eine Möglichkeit wäre die Verwendung der Split-Funktion:

s = "Hallo Ihr *da* draussen!"
zeichen = "*"
varItem = Split(s, zeichen)
MsgBox "Der Text """ & s & """ hat " & UBound(varItem) & "x das Zeichen " & zeichen & "."

HTH

Nouba
23.09.2003, 16:33
Hallo,

hiermit sollte es gehen
Function ZaehleZchnFolge(ZchnKette As String, ZchnFolge As String) As Integer

Dim lngPos As Long
Dim intZaehler As Integer

Do
lngPos = InStr(lngPos + 1, ZchnKette, ZchnFolge)
If lngPos = 0 Then Exit Do
intZaehler = intZaehler + 1
Loop

ZaehleZchnFolge = intZaehler

End Function

myrix
23.09.2003, 16:37
@MRR
Cool! das funktioniert ja super, damit lässt sich was anfangen! Danke :top:

@Nouba
Das muss ich gleich mal ausprobieren, dank Dir :)

thx myrix :happy:

myrix
23.09.2003, 16:50
Ich noch mal, hab gerade nen Blackout

ich hab hier folgende Sub

Public Sub s_test2()
Dim lsS1 As String, lsS2 As String
lsS1 = "Hallo*Du*du*da"
lsS2 = "*"

modul1.ZaehleZchnFolge
end sub


nun brauche ich aber noch die Ausgabe: Sprich

msgbox ...

wie ging das noch gleich, oder hab ich oben auch noch nen Fehler?
Ich gerade nich wirklich mehr durch :bawling:

Heiopei
23.09.2003, 16:58
Hallo,
Nouba hat Dir eine Functiion gebastelt, deren Ergebnis du an eine Variable übergeben kannst oder dirket per msgbox ausgeben kannst .
In Deinem Beispiel wär das:

Public Sub s_test2()
Dim lsS1 As String, lsS2 As String
lsS1 = "Hallo*Du*du*da"
lsS2 = "*"

msgbox(modul1.ZaehleZchnFolge(lsS1,lsS2))
'oder auch
dim Wert as integer

wert= modul1.ZaehleZchnFolge(lsS1,lsS2)

msgbox ("Der Ausdruck " & lsS1 & " enthält " & str(wert) & " mal das Zeichen " & lsS2)
end sub

...ungetestet


Liebe Grüße
Heie

myrix
23.09.2003, 17:15
Ähem! :rolleyes:
Na klar, hätte ich ja auch selbst drauf kommen können, ich wußte irgendwie geht das, ist auch logisch!

Vielen, vielen Dank!

Ihr habt mir sehr geholfen :)