Comment faire correspondre les caractères unicode en Java
Je m d'essayer de faire correspondre les caractères unicode en Java.
Chaîne D'Entrée: informa
Chaîne de match : informátion
Jusqu'à présent, j'ai essayé ceci:
Pattern p= Pattern.compile("informa[\u0000-\uffff].*", (Pattern.UNICODE_CASE|Pattern.CANON_EQ|Pattern.CASE_INSENSITIVE));
String s = "informátion";
Matcher m = p.matcher(s);
if(m.matches()){
System.out.println("Match!");
}else{
System.out.println("No match");
}
Il ne sort qu'à "Aucun match". Des idées?
Que diriez -
Oui, ce serait l'idée. Pour l'instant, les plats ferait.
îñfórmåtìön
? Faut-il "le Match!"?Oui, ce serait l'idée. Pour l'instant, les plats ferait.
OriginalL'auteur ankimal | 2010-06-23
Vous devez vous connecter pour publier un commentaire.
Le terme de "caractères Unicode" n'est pas assez précis. Il pourrait correspondre à chaque personnage qui est dans la palette Unicode, donc aussi "normal" de caractères. Ce terme est cependant très souvent utilisée lorsque l'on fait signifie "les caractères qui ne sont pas dans le ASCII imprimables gamme".
En regex des conditions qui seraient
[^\x20-\x7E]
.En fonction de ce que tu aimerais faire avec cette information, voici quelques utiles de suivi des réponses:
Si votre à l'exigence fonctionnelle est "get débarrasser des signes diacritiques", puis c'est en effet la voie à suivre. Votre première question n'était pas formulé comme ça 🙂
Je pense que la question n'était pas limpide. L'objectif était d'être en mesure de correspondre à "l'information" avec "informátion", et donc la possibilité de faire correspondre 'a' avec toutes les formes de un comme 'á','å' etc. La suppression des signes diacritiques et puis correspondant semble être la voie à suivre.
OriginalL'auteur BalusC
Est-ce parce que
informa
n'est pas une sous-chaîne deinformátion
?Comment votre code de travail si vous avez supprimé le dernier
a
deinforma
dans votre regex?J'ai oublié de mettre le lien de cette, java.sun.com/docs/books/tutorial/essential/regex/pattern.html (Motif.CANON_EQ)
OriginalL'auteur Austin Fitzpatrick
Il semble que vous voulez faire correspondre les lettres tout en ignorant les signes diacritiques. Si c'est à droite, puis normaliser vos chaînes NFD forme, bande les signes diacritiques, et ensuite faire votre recherche.
Pour en savoir plus à propos de NFD:
OriginalL'auteur james.garriss