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

Répondre à