Ich möchte herausfinden, ob ein String ein "," (Komma) enthält. Haben wir eine andere Möglichkeit als char-by-char zu lesen?
Verwenden Sie die Funktion Instr
Dim pos As Integer
pos = InStr("find the comma, in the string", ",")
wird 15 in pos zurückgeben
Wenn nicht gefunden, wird 0 zurückgegeben
Wenn Sie das Komma mit einer Excel-Formel suchen müssen, können Sie die Funktion =FIND(",";A1)
verwenden.
Beachten Sie, dass Sie, wenn Sie Instr
verwenden möchten, um die Position eines Strings zu ermitteln, bei dem die Groß- und Kleinschreibung nicht beachtet wird, den dritten Parameter von Instr verwenden und ihm die Konstante vbTextCompare
geben (oder nur 1 für die-hards).
Dim posOf_A As Integer
posOf_A = InStr(1, "find the comma, in the string", "A", vbTextCompare)
gibt Ihnen einen Wert von 14.
Beachten Sie, dass Sie in diesem Fall die Startposition wie in der Spezifikation I linked angegeben angeben müssen: Das Startargument ist erforderlich, wenn compare angegeben ist.
Sie können auch das spezielle Wort like
verwenden:
Public Sub Search()
If "My Big String with, in the middle" Like "*,*" Then
Debug.Print ("Found ','")
End If
End Sub
Es gibt auch die Funktion InStrRev , die das Gleiche tut, aber die Suche vom Ende des Textes bis zum Anfang beginnt.
Per @ renes Antwort ...
Dim pos As Integer
pos = InStrRev("find the comma, in the string", ",")
... würde immer noch 15 zu pos zurückgeben, aber wenn der String mehr als einen der Suchstrings enthält, wie das Wort "the", dann:
Dim pos As Integer
pos = InStrRev("find the comma, in the string", "the")
... würde 20 statt 6 zu pos zurückgeben.
Aufbauend auf Renes Antwort könnten Sie auch eine Funktion schreiben, die entweder TRUE zurückgibt, wenn der Teilstring vorhanden ist, oder FALSE, wenn dies nicht der Fall ist:
Public Function Contains(strBaseString As String, strSearchTerm As String) As Boolean
'Purpose: Returns TRUE if one string exists within another
On Error GoTo ErrorMessage
Contains = InStr(strBaseString, strSearchTerm)
Exit Function
ErrorMessage:
MsgBox "The database has generated an error. Please contact the database administrator, quoting the following error message: '" & Err.Description & "'", vbCritical, "Database Error"
End
End Function