Vérifier si une chaîne ne contient que des lettres, des chiffres et des caractères de soulignement
J'ai pour vérifier si une chaîne ne contient que des lettres, des chiffres et des caractères de soulignement.
C'est de cette façon que j'ai essayé mais ça ne fonctionne pas:
for(int i = 0; i<=snameA.Length-1; i++)
{
validA = validA && (char.IsLetterOrDigit(snameA[i])||snameA[i].Equals("_"));
}
- essayez d'utiliser des Regex pour ce qui vérifie les plus de ce modèle: ([A-Za-z0-9\-_]+)
- Je ne sais pas. validA est une valeur booléenne qui doit être définie sur true uniquement si les conditions sont réalisées, mais il est défini sur true, même si la chaîne contient des caractères spéciaux
- Que signifie "ne fonctionne pas", impliquent? les erreurs? des résultats non valides?
- Remarque: le code a été changé dans le temps.
- J'ai ajouté "validA &&" mais ça ne fonctionne toujours pas fonctionné.
Vous devez vous connecter pour publier un commentaire.
J'aime Linq pour ce genre de question:
De l'affectation d'
validA
chaque fois à nouveau, sans vérifier sa valeur précédente. Maintenant, vous obtenez toujours la valeur de la dernière vérification exécutée.Vous pourriez 'et' le résultat:
Cela signifie que vous courez toujours tous les personnages, ce qui peut être inutile si le premier échec de la vérification. Il est donc préférable de simplement sortir si elle échoue:
Ou avec LINQ:
vous pouvez utiliser des regex
Regex
en prenant son propre exemple en tant que paramètre!a-zA-Z0-9_
est le même que\w
a-zA-Z0-9_
accepte anglais l'alphabet seulement, quand\w
accepte aucun lettres, par exempleПеременная
(Variable en russe). Vous avez tout à fait raison: l'actuel inplementation dans la question (viachar.IsLetterOrDigit
) correspond\w*
dans l'expression régulièreVous pouvez essayer correspondant à une expression régulière. Il est construit dans le type de "des lettres, des chiffres et des caractères de soulignement", qui est "\w".
Si vous avez besoin de 1 ou plus, puis utilisez "\w+".
Plus d'informations ici: Regex.IsMatch
Je voudrais utiliser une Regex
D'abord, lettre est un peu vague: voulez-vous dire
a..z
etA..Z
caractères ou lettre pourrait appartenir à tout l'alphabet, par exempleа..я
etА..Я
(russe, l'alphabet Cyrillique). En fonction de vos actuel de la mise en œuvre, vous voulez le deuxième option.Solution typique avec boucle pour vérifier jusqu'à la première contre-exemple:
Cependant, vous pouvez simplifier le code en Linq:
Ou expression régulière: