2011-05-09 5 views
1

Je souhaite également stocker des chaînes dans un format de type limace plus interrogeable dans la base de données, en les forçant en minuscules, en remplaçant les lettres accentuées par leurs équivalents latins (ä -> a, ö -> o, ç -> c etc.) et en remplaçant les autres caractères spéciaux par des tirets. Existe-t-il une norme pour ce type de format? Ce qui serait préférable signifie l'atteindre en Java?Création de chaînes pouvant être interrogées

+0

Je voudrais regarder ce poste: http://stackoverflow.com/questions/249087/how-do-i-remove-diacritics-accents-from-a-string-in-net – MikeKusold

Répondre

0

C'est le solution que j'ai trouvé mieux à ce jour de travail:

return Normalizer 
    .normalize(src.trim().toLowerCase(Locale.ENGLISH), 
     Normalizer.Form.NFD) 
    .replaceAll("\\p{InCombiningDiacriticalMarks}+", "") 
    .replaceAll("[^\\p{ASCII}]+", "-") 
    .replaceAll("[^a-z0-9]+", "-").replaceAll("(^-|-$)+", ""); 

Cela convertit: ¿Qué? à que, Cool !!!! 1 à cool-1 et åæø à a.

0

La base de données peut le faire pour vous par le biais des classements. Les classements spécifient quels caractères dans un jeu de caractères spécifique peuvent être considérés comme équivalents les uns par rapport aux autres lorsqu'ils sont comparés.

Jetez un oeil à ce par exemple visuel d'une collation:

http://www.collation-charts.org/mysql60/mysql604.utf8_general_ci.european.html

Voici une bonne description de la façon dont les classements fonctionnent à partir du manuel MySQL:

http://dev.mysql.com/doc/refman/5.0/en/charset-syntax.html

+0

Je cherche un solution ignorante de fournisseur de base de données que mon backend ne supportera probablement pas cela. – hleinone

+0

Vous pouvez essayer cette bibliothèque: [link] (http://site.icu-project.org/#TOC-Why-ICU4J-). Il vous permet de travailler avec des classements de jeux de caractères en Java, mais vous ne savez pas si cela correspond à votre cas d'utilisation particulier. – Eric

+0

Java [ 'Normalizer'] (http://download.oracle.com/javase/6/docs/api/java/text/Normalizer.html) semble regrouper la même façon que ces liens MySQL vous avez fourni, encore » Laisser certains caractères comme ð, ø et æ tels quels. Je voudrais finir avec juste a-z et tirets. – hleinone

Questions connexes