Comment vérifier une chaîne pour m'assurer qu'elle ne contient que des chiffres, des lettres ou des espaces?
La façon la plus simple d’utiliser une expression régulière:
Expression régulière pour les caractères alphanumériques et les traits de soulignement
Utiliser des expressions régulières en .net:
http://www.regular-expressions.info/dotnet.html
var regexItem = new Regex("^[a-zA-Z0-9 ]*$");
if(regexItem.IsMatch(YOUR_STRING)){..}
Simple:
function HasSpecialChars(string yourString)
{
return yourString.Any( ch => ! Char.IsLetterOrDigit( ch ) )
}
string s = @"$KUH% I*$)OFNlkfn$";
var withoutSpecial = new string(s.Where(c => Char.IsLetterOrDigit(c)
|| Char.IsWhiteSpace(c)).ToArray());
if (s != withoutSpecial)
{
Console.WriteLine("String contains special chars");
}
Essayez de cette façon.
public static bool hasSpecialChar(string input)
{
string specialChar = @"\|!#$%&/()=?»«@£§€{}.-;'<>_,";
foreach (var item in specialChar)
{
if (input.Contains(item)) return true;
}
return false;
}
String test_string = "tesintg#$234524@#";
if (System.Text.RegularExpressions.Regex.IsMatch(test_string, "^[a-zA-Z0-9\x20]+$"))
{
// Good-to-go
}
Un exemple peut être trouvé ici: http://ideone.com/B1HxA
Si la liste des caractères acceptables est assez petite, vous pouvez utiliser une expression régulière comme celle-ci:
Regex.IsMatch(items, "[a-z0-9 ]+", RegexOptions.IgnoreCase);
L’expression régulière utilisée ici recherche tout caractère compris entre 0 et 9, y compris un espace (entre les crochets []), un ou plusieurs de ces caractères (le signe + - vous pouvez utiliser un * pour 0 ou plus). La dernière option indique à l'analyseur d'expression régulière d'ignorer la casse.
Cela échouera sur tout ce qui n'est pas une lettre, un chiffre ou un espace. Pour ajouter plus de caractères à la liste bénie, ajoutez-la entre crochets.
Utilisez l'expression régulière ci-dessous pour valider une chaîne afin de vous assurer qu'elle contient uniquement des chiffres, des lettres ou des espaces:
[a-zA-Z0-9 ]