it-swarm.com.de

Überprüfen Sie, ob eine Zeichenfolge eine andere Zeichenfolge enthält

Ich möchte herausfinden, ob ein String ein "," (Komma) enthält. Haben wir eine andere Möglichkeit als char-by-char zu lesen?

216
krishna

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.

357
rene

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
61
Makah

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.

22
LimaNightHawk

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
15
Sinister Beard