Java détecter les caractères spéciaux dans une chaîne de caractères
- Je utiliser les regex
r="[^A-Za-z0-9]+";
pour détecter si une chaîne a une ou plusieurs caractères autres que les lettres et les chiffres;
Ensuite, j'ai essayé le suivant:
Pattern.compile(r).matcher(p).find();
J'ai testé:
! @ # $ % ^ & * ( ) + =- [ ] \ ' ; , . /{ } | " : < > ? ~ _ `
La plupart du temps, il travaille à l'exception dosseret \ lambda ^.
par exemple
String p = "abcAsd10^" (return false)
String p = "abcAsd10\\" (return false)
Rien je m'ennuie?
Je reçois des correspondances pour les "abcAsd10\\" et "abcAsd10^", donc, ici, il renvoie la valeur true. Notez que j'utilise C# donc je pense qu'il doit à Java. Il peut aider si vous écrivez un petit exemple de code qui illustre votre problème.
FWIW, les deux chaînes semblent correspondre sur Ideone.
Je reçois vrai en java.
Désolé, j'avais r="[^A-za-z0-9]+"; (avec peu de "z"). Qui provoque le retour "false"
Donc, vous avez vos réponses maintenant? Ne sait pas si vous avait un type dans votre donc, la question ou le problème lui-même.
FWIW, les deux chaînes semblent correspondre sur Ideone.
Je reçois vrai en java.
Désolé, j'avais r="[^A-za-z0-9]+"; (avec peu de "z"). Qui provoque le retour "false"
Donc, vous avez vos réponses maintenant? Ne sait pas si vous avait un type dans votre donc, la question ou le problème lui-même.
OriginalL'auteur Eric | 2012-06-05
Vous devez vous connecter pour publier un commentaire.
Le code suivant affiche "Trouvés: true" quand j'ai compiler et de l'exécuter:
Ne sais pas pourquoi vous voulez voir un résultat différent...
OriginalL'auteur jahroy
Ne pourrait-il pas être:
Dans votre question, vous écrivez a_z (trait de soulignement)
OriginalL'auteur buckley
Lorsque j'exécute ce code sur ma machine, il imprime vrai..
[^A-Za_z0-9]+
nous avons donc besoin de marquer cette question... il n'en est rien, mais un bug
L'original ([^A-Za_z0-9]+) devrait donner la vraie, Paul. Aynone essayer '[^A-za_z0-9]+'?
OriginalL'auteur baby boom
Vous pouvez également changer seulement:
Où:
\w
Un caractère de mot avec un trait de soulignement:[a-zA-Z_0-9]
\W
Un caractère non alphabétique:[^\w]
Voir plus dans la classe
Peut-être il pourrait être intéressant de faire l'expérience d'une autre manière.
OriginalL'auteur Paul Vargas
Essayer en citant votre entrée dans le matcher.
OriginalL'auteur Robert de W
Il suffit de faire:
OriginalL'auteur elias
Désolé, j'avais
Qui provoque le retour "faux". Mais pourquoi cela fonctionne avec d'autres caractères spéciaux sauf dosseret \ lambda ^?
OriginalL'auteur Eric