Regex Case insensitive avec accent
Bonjour à tous,
Un bon bout de code vaut mieux que toutes les explications ...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public class Test {
/**
* @param args
*/
public static void main(String[] args) {
String test = " toto TOTO tité TITÉ ";
System.out.println("1 :"+removeAll(test,"toto"));
System.out.println("2 :"+removeAll(test,"TOTO"));
System.out.println("3 :"+removeAll(test,"tité"));
System.out.println("4 :"+removeAll(test,"TITÉ"));
}
public static String removeAll(String text,String libelleToRemove){
return text.replaceAll("(?i)\\b"+libelleToRemove +"\\b", "");
}
} |
Citation:
1 : tité TITÉ
2 : tité TITÉ
3 : toto TOTO TITÉ
4 : toto TOTO tité
Mais pourquoi ça marche pas avec les accents :cry: ????????
La javadoc dit bien
http://download.oracle.com/javase/1,...ttern.html#sum
Citation:
Case-insensitive matching can also be enabled via the embedded flag expression (?i).
É est bien la majuscule de é ... ce qui fait qu'ils devraient être identiques lors de traitement "case insensitive" !!
Je sens qu'il y a une fourberie de problème d'encodage derrière mais je ne trouve pas de justification.
Si quelqu'un a une idée ?