2011-02-08 3 views
2

J'essaie de faire correspondre les noms de domaine dans les chaînes d'adresses e-mail dans VB6 et ce n'est pas mon langage quotidien. Je veux fondamentalement extraire le nom de domaine d'une adresse (par exemple, [email protected]) pour la comparaison. Je voudrais l'extraire en obtenant tout après "@" et je pense que trouver l'index de "@", puis en utilisant Left$() satisferait mes besoins. Comment puis-je obtenir l'index?VB6 Index de sous-chaîne

Répondre

7

Vous pouvez utiliser la fonction InStr pour ce faire:

Exemple:

s$ = "[email protected]" 
d$ = Mid$(s$, InStr(1, s$, "@") + 1) 

La variable d $ finirait par la chaîne "foo.com". (N'oubliez pas de vérifier que le signe @ est présent, sinon vous devriez vous retrouver avec toute la chaîne source.)

+0

Puisque je devrais vérifier le @, j'utiliserai InStr() pour le déterminer, mais quelle valeur renvoie-t-il si "@" n'est pas une sous-chaîne de la chaîne d'adresse? – jlafay

+0

La fonction retournera un 0 si la chaîne n'est pas trouvée. –

+0

http://www.aivosto.com/vbtips/instr.html –

0

J'utiliserais la fonction Spit ici.

Dim strEmail, arr, strDomain 
strEmail = "[email protected]" 
arr = Split(strEmail, "@") 
if arr.Count > 1 then 
    strDomain = arr(1) 
end if 

Espérons que cela aide.

Édition
Désolé, nous avons oublié d'ajouter une vérification que le tableau a plus de 1 valeur.

+2

Ces variables doivent être fortement typées au lieu de défaut à Variants. Plus important encore, bien que les tableaux n'aient pas de propriété Count. En dehors de cela, ce serait une solution viable. – Bob77

+0

Quelques autres points: (1) 'Split' renvoie un tableau à base zéro, donc vous devrez utiliser' arr (0) 'pour accéder au premier élément du tableau; (2) un remplacement utilisable (quoique maladroit) pour le non-travail 'arr.Count' est d'utiliser' UBound (arr) -LBound (arr) + 1'. – dmc