Bonjour,
> je cherche une m�thode simple pour doubler les apostrophes dans une
> string
>
> ex: STring tt = " il est l'heure "
> --> tt = " il est l''heure "
>
> S�bastien
Une m�thode simple constiste � lire la doc ;-)
Tu trouveras dans la classe String :
String replaceAll(String regex, String replacement)
Replaces each substring of this string that matches the given regular
expression with the given replacement.
Ce qui dans ton exemple peut �tre utilis� de la fa�on suivante :
String in = " il est l'heure ";
String out = in.replaceAll("'", "''");
System.out.println("Test : "+in+" => "+out);
En sortie cela donne :
Test : il est l'heure => il est l''heure
Note que ce type de remplacement n'est disponible qu'avec Java 1.4.0,
et que les expressions r�guli�res sont beaucoup plus puissantes.
Par exemple tu peux faire l'inverse...
C'est � dire remplacer tous les caract�res qui sont en double,
ou mieux tous les mots qui sont en double :
String out = in.replaceAll("(\\w)\\1", "???");
System.out.println("Test : "+in+"\n => "+out);
String out2 = in.replaceAll("\\b(\\w+)\\s\\1", "???");
System.out.println("Test : "+in+"\n => "+out2);
En sortie cela donne :
Test : Les fautes de de frappe sont inacceptables.
=> Les fautes de de fra???e sont ina???eptables.
Test : Les fautes de de frappe sont inacceptables.
=> Les fautes ??? frappe sont inacceptables.
Remplacer par "???" n'est pas ce qui ce fait de mieux...
Autant carr�ment supprimer les doublons.
Cela demande un peu plus de code :
Matcher m = Pattern.compile("\\b(\\w+)\\s\\1").matcher(in);
StringBuffer sb = new StringBuffer();
boolean result = false;
while (result = m.find())
m.appendReplacement(sb, "$1");
m.appendTail(sb);
System.out.println("Test : "+in+"\n => "+sb.toString());
En sortie cela donne :
Test : Les fautes de de frappe sont inacceptables.
=> Les fautes de frappe sont inacceptables.
Mais bon l� je commence �me sentir hors-sujet ;-)
R�mi