Les caractères autorisés sont (au moins) A-Z, a-z, 0-9, ö, Ö, ä, ä, å, Å et allemand, letton, estonien (le cas échéant) caractères spéciaux? Existe-t-il une méthode prête à l'emploi ou dois-je faire des listes noires (caractères non autorisés) et des expressions régulières IsMatch? Si non prêt à l'emploi comment utiliser la liste noire?Comment savoir si une chaîne contient des caractères non alphanumériques en C#/.NET 2.0?
Répondre
Je ne sais pas comment les caractères spéciaux de tous ces langages sont catégorisés, mais vous pouvez vérifier si la méthode Char.IsLetterOrDigit
correspond à ce que vous voulez faire. Il fonctionne au moins pour les chiffres et les lettres que j'ai testé:
string test = "Aasdf345ÅÄÖåäöéÉóÓüÜïÏôÔ";
if (test.All(Char.IsLetterOrDigit)) { ... }
Les retours Char.IsLetterOrDigit
vrai pour les caractères qui sont classés en Unicode comme UppercaseLetter, LowercaseLetter, TitlecaseLetter, ModifierLetter, OtherLetter ou DecimalDigitNumber.
Qu'est-ce que le test.Tout? Ce n'est pas une méthode de chaîne, est-ce une sorte de méthode d'extension? Ou une méthode LINQ? – Task
@Task 'All' est une extension linq de la chaîne. Voir http://msdn.microsoft.com/en-us/library/system.string.aspx – mydogisbox
Ah! La section "Méthodes d'extension" de la documentation est nouvelle pour moi, je n'avais pas vu ça auparavant. Je suppose que je me suis trop habitué à trouver tout ce dont j'ai besoin dans la zone "Propriétés" ou "Méthodes". Merci! – Task
Recherchez char.IsLetterOrDigit(char)
.
Par exemple:
myString.All(c => char.IsLetterOrDigit(c));
Juste curieux, mais pourquoi était-ce downvoted? Pour autant que je sache, c'est une façon parfaitement valable de faire ce que le PO a demandé. – Flynn1179
Ah .. juste regardé de plus près; jamais remarqué l'exigence 0-9 là-bas.J'ai modifié ma réponse pour utiliser 'IsLetterOrDigit' au lieu de simplement' IsLetter'. – Flynn1179
Un raccourci pour cela est 'myString.All (char.IsLetterOrDigit);' – gls123
Une liste noire pour les personnages est probablement assez grand :-)
Vous pouvez utiliser l'expression régulière
^[\d\p{L}]+$
pour correspondre à des chiffres décimaux et des lettres, quel que soit de script.
Cette expression régulière se compose d'une classe de caractères contenant les sténographies \d
- qui contient tous les chiffres (230 au total dans le BMP) et \p{L}
qui contient tous les caractères Unicode classés comme une « lettre » (46817 dans le BMP). Ladite classe de caractères est ensuite répétée au moins une fois et insérée entre ^
et $
- les ancres de début et de fin de la chaîne, de sorte qu'elle correspond à la chaîne complète.
Pour certains moteurs regex, puisque vous n'êtes intéressé que par les lettres latines, apparemment, vous pouvez également utiliser
^[\d\p{Letter}]+$
Cependant, .NET ne supporte pas. Le premier regex mentionné ci-dessus capture en fait tout ce qui est un chiffre ou une lettre en n'importe quel script. Donc, il sera consciencieusement correspondre à des chiffres indiens ou arabes et hébreu, cyrillique et d'autres scripts non latins. En fonction de ce que vous voulez, cela peut ne pas être approprié.
Si cela pose un problème, alors je ne vois pas de meilleure option que de lister explicitement les caractères que vous voulez autoriser. Cependant, je considère qu'il est dangereux de supposer que le texte dans une certaine langue est toujours limité au script de cette langue. Si je devais écrire un nom tchèque ou polonais dans un texte allemand, j'aurais probablement besoin de plus de [a-zA-ZäöüÄÖÜß]
.
+1 pour le \ p {option} –
merci! Pouvez-vous expliquer comment^[\ d \ p {L}] + $ fonctionne. J'ai vérifié sur le Web mais je ne pouvais pas le résumer entièrement ... –
Il serait plus simple de faire correspondre les caractères autorisés à un faux retour.
- 1. PHP: Comment savoir si une chaîne contient des caractères spéciaux?
- 2. Suppression de caractères non alphanumériques d'une chaîne
- 3. Comment détecter si une chaîne contient des caractères spéciaux?
- 4. Comment trouver si une chaîne contient l'un des caractères spéciaux?
- 5. Comment savoir si une chaîne contient un certain caractère dans JavaScript?
- 6. Vérifiez mot de passe contient caractères alphanumériques et spéciaux
- 7. chaîne contient des caractères valides
- 8. Comment déterminer si une chaîne contient des métacaractères regex? (C#)
- 9. Comment faire pour supprimer tous les caractères non-alphanumériques et non-espace d'une chaîne en PHP?
- 10. Comment savoir si ma chaîne contient le caractère "micro" Unicode?
- 11. Comment savoir rapidement si une liste contient uniquement des doublons?
- 12. URL Encoder tous les caractères non alphanumériques en C#
- 13. Vérifier si une chaîne contient des nombres
- 14. supprimer les caractères non alphanumériques, sauf espace
- 15. En Perl, comment savoir si une chaîne est un nombre?
- 16. Ne laissez pas coller des caractères non alphanumériques
- 17. Comment savoir si une chaîne contient une autre chaîne dans un script shell Unix?
- 18. Validateur d'expressions régulières pour intercepter les caractères non alphanumériques
- 19. expressions régulières - tester si une chaîne contient une autre chaîne
- 20. Vérifie si une chaîne contient une chaîne en C++
- 21. Regex pour tester si une chaîne d'entrée contient un certain nombre de caractères
- 22. Comment déterminer si la chaîne contient une sous-chaîne spécifique dans les X premiers caractères
- 23. Comment puis-je tester si une chaîne contient uniquement des caractères dans un ensemble donné?
- 24. Comment déterminer si une chaîne contient une sous-chaîne spécifique
- 25. Expression régulière pour rejeter les caractères non-alphanumériques
- 26. Bash: textfile Divisé en mots avec des caractères non alphanumériques comme délimiteurs
- 27. Détection si une chaîne contient une "phrase réelle"?
- 28. Applescript: vérifier si une chaîne contient une chaîne vide?
- 29. RegEx (en JavaScript find/remplacer) - correspondent à des caractères non-alphanumériques, mais ignorer - et +
- 30. T-SQL trim & nbsp (et autres caractères non alphanumériques)
Un autre thread ayant des réponses à considérer http://stackoverflow.com/questions/2371780/ Peut fournir des informations supplémentaires. –
duplication possible de [.net Regular Expression pour correspondre à n'importe quel type de lettre de n'importe quelle langue] (http://stackoverflow.com/questions/2949861/net-regular-expression-to-match-any-kind-of-letter- de-tout-langue) – GvS