i m Essayez de faire correspondre les caractères Unicode en Java.
String d'entrée: chaîne correspondant: jusqu'à présent, j'ai essayé ceci: p> Il sort comme "pas de match". Des idées? P> p> informa code> p> Information code> p>
3 Réponses :
est-ce parce que Comment votre code fonctionnerait-il si vous avez supprimé le dernier informa code> n'est pas une sous-chaîne de Informátion code> du tout? p>
A code> à partir de Informa code> dans votre regex? P>
Informa \ u0301 fonctionne dans la chaîne de motif. Cela concerne le motif.Canon_eq.
J'ai oublié de mettre dans le lien pour cela, Java.sun.com.com /docs/books/tatudial/essential/regex/pattern.htm l (modèle.Canon_eq)
Le terme "caractères Unicode" n'est pas suffisamment spécifique. Il correspondrait chaque caractère em> qui se trouve dans la plage Unicode, donc aussi des caractères "normaux". Ce terme est toutefois très souvent utilisé lorsqu'on réellement em> signifie "caractères qui ne sont pas dans le Gamme ASCII imprimable ". dans les termes de regex qui serait en fonction de ce que vous aimeriez faire avec Cette information, voici quelques réponses de suivi utiles: P> [^ \ x20- \ x7e] code>. p>
Le Java.Text.Normalizer semble être comme la voie à suivre (balle 2). La correspondance Unicode ne semble tout simplement pas fonctionner comme prévu et je pourrais être frappé avec une pénalité de performance même si elle l'a fait.
Si votre exigence fonctionnelle réelle i> est «Débarrassez-vous des marques diacritiques», alors c'est la voie à suivre. Votre question initiale n'a été que non formulée comme ça :)
Je pense que la question n'a pas été cristalline claire. L'objectif était de pouvoir faire correspondre des "informations" avec "Informátion", donc la capacité de faire correspondre "A" avec des formes d'une "Á" comme "Å", etc., en supprimant les marques diacritiques, puis la correspondance semble être la voie à suivre aller.
On dirait que vous voulez faire correspondre des lettres tout en ignorant les marques diacritiques. Si cela est juste, alors normaliser vos chaînes à la forme NFD, éliminer les marques diagritiques, puis effectuez votre recherche.
String normalized = java.text.Normalizer.normalize(textToSearch, java.text.Normalizer.Form.NFD);
String withoutDiacritical = normalized.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
// Search code goes here...
Que diriez-vous de
îÑfórmåtìön code>? Devrait-il "correspondre!"?Oui, ce serait l'idée. Pour le moment, juste le á ferait.