Vérifier si une chaîne contient une autre chaîne

Je veux savoir si une chaîne contient un “,” (virgule). Avons-nous d’autres options que la lecture de char-by-char?

Utilisez la fonction Instr

 Dim pos As Integer pos = InStr("find the comma, in the ssortingng", ",") 

retournera 15 en pos

S’il n’est pas trouvé, il retournera 0

Si vous avez besoin de trouver la virgule avec une formule Excel, vous pouvez utiliser la fonction =FIND(",";A1) .

Notez que si vous voulez utiliser Instr pour trouver la position d’une chaîne insensible à la casse, utilisez le troisième paramètre de Instr et donnez-lui le const vbTextCompare (ou juste 1 pour les die-hards).

 Dim posOf_A As Integer posOf_A = InStr(1, "find the comma, in the ssortingng", "A", vbTextCompare) 

vous donnera une valeur de 14.

Notez que vous devez spécifier la position de départ dans ce cas, comme indiqué dans la spécification que j’ai liée: l’ argument de début est requirejs si vous spécifiez une comparaison.

Vous pouvez également utiliser le mot spécial like :

 Public Sub Search() If "My Big Ssortingng with, in the middle" Like "*,*" Then Debug.Print ("Found ','") End If End Sub 

Il y a aussi la fonction InStrRev qui fait le même type de chose, mais commence à chercher de la fin du texte au début.

La réponse de Per @ rene …

 Dim pos As Integer pos = InStrRev("find the comma, in the ssortingng", ",") 

… retournerait toujours 15 à pos, mais si la chaîne a plus d’une chaîne de recherche, comme le mot “the”, alors:

 Dim pos As Integer pos = InStrRev("find the comma, in the ssortingng", "the") 

… retournerait 20 à pos au lieu de 6.

Sur la base de la réponse de Rene, vous pouvez également écrire une fonction qui renvoie TRUE si la sous-chaîne est présente ou FALSE si ce n’est pas le cas:

 Public Function Contains(strBaseSsortingng As Ssortingng, strSearchTerm As Ssortingng) As Boolean 'Purpose: Returns TRUE if one ssortingng exists within another On Error GoTo ErrorMessage Contains = InStr(strBaseSsortingng, 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