VBA: Test si string commence par une chaîne?

Dans VBA, Quel est le moyen le plus simple de tester si une chaîne commence par une sous-chaîne? Java a startsWith. Existe-t-il un équivalent VBA?

48
demandé sur armstrhb 2013-12-27 19:04:18

2 réponses

Il y a plusieurs façons de le faire:

InStr

Vous pouvez utiliser la fonction InStr pour tester si une chaîne contient une sous-chaîne. {[2] } retourne soit l'index de la première correspondance, soit 0. Vous pouvez donc tester si une chaîne commence par une sous-chaîne en procédant comme suit:

If InStr(1, "Hello World", "Hello W") = 1 Then
    MsgBox "Yep, this string begins with Hello W!"
End If

Si InStr renvoie 1, alors la chaîne ("Hello World"), commence par la sous-chaîne ("Hello W").

Comme

Vous pouvez également utiliser l'opérateur de comparaison like avec certains modèle de base correspondant:

If "Hello World" Like "Hello W*" Then
    MsgBox "Yep, this string begins with Hello W!"
End If

En cela, nous utilisons un astérisque ( * ) pour tester si la chaîne commence par notre sous-chaîne.

93
répondu armstrhb 2013-12-27 15:04:18

A en juger par la déclaration et la description de la fonction startsWith Java , le "moyen le plus simple" de l'implémenter dans VBA serait soit avec Left:

Public Function startsWith(str As String, prefix As String) As Boolean
    startsWith = Left(str, Len(prefix)) = prefix
End Function

Ou, si vous voulez avoir le paramètre offset disponible, avec Mid:

Public Function startsWith(str As String, prefix As String, Optional toffset As Integer = 0) As Boolean
    startsWith = Mid(str, toffset + 1, Len(prefix)) = prefix
End Function
28
répondu Blackhawk 2013-12-27 18:08:10