2010-07-21 6 views
0

Si vous utilisez ce qui suit dans une instruction if je reçois une erreur:taille Substring conseils

If trg.Name.Substring(4, 6).ToUpper <> ("ABCDEF") Then 

Je reçois l'erreur: « Index et la longueur doit se référer à un emplacement dans la chaîne Nom du paramètre:. Longueur » Je suppose que c'est parce que la chaîne (trg.name) est trop petite pour la sous-chaîne 4, 6. Quelle serait la méthode correcte pour contourner ce problème?

Merci, madlan.

VB.net Studio 2008.

Répondre

2
If (trg.Name.IndexOf("ABCDEF", StringComparison.OrdinalIgnoreCase) <> 4) Then 
+0

+1 de moi. C'est la façon dont je recommanderais. – Stefan

0

Vous devriez probablement vérifier que la longueur de trg.Name est au moins (4 + 6) caractères.

+0

trg.nom peut être n'importe quelle longueur. Je suis à la recherche de tout qui correspond 123_ABCDEF *** La seule constante est 4, 6 (ABCDEF) que je dois rechercher. – madlan

1

instr renvoie l'index de l'endroit où la chaîne recherchée est d'abord trouvé. Donc, si vous pouviez faire ceci:

If InStr(trg.Name, "ABCDEF", CompareMethod.Text) - 1 <> 4 Then 

Avec InStr vous n'avez pas à vérifier la longueur de trg.Name.

+0

LukeH: l'exemple est meilleur (en utilisant les objets-de-chaîne .IndexOf), mais je laisse ma réponse telle quelle pour la variation et l'information. – Stefan