Eh ben... C'est pas facile-facile, en fait. Il y a plusieurs manières d'aborder le problème. Je t'en propose une simple à comprendre, à trois étape :
1 - Extraire le texte sur lequel faire des modification
À l'aide d'une regex qui reconnaît les parenthèses de début et de fin, et surtout capture tout ce qu'il y a entre.
1 2 3 4 5 6 7
| String internal;
Matcher matcher = Pattern.compile("\\('(.*)'\\)").matcher(s);
if(matcher.matches()) {
internal = matcher.group(1); // récupérer ce que la regex a trouvé entre parenthèses.
} else {
throw new IllegalArgumentException("Impossible de traiter la String de format inconnu : " + s);
} |
2 - Remplacer les caractères
Maintenant que les caractères que tu ne voulais pas toucher ne sont plus là, c'est tout simple
internal = internal.replaceAll("'", "''");
3 - Remettre entre parenthèses
String result = "(" + internal + ")";
Conclusion -
c'est pas trop long, ça s'adapte bien à la plupart des cas, et c'est facile à comprendre.
Surtout si l'étape 1 est mise dans une méthode qui porte un nom genre private static String extractInternalText(String s) {.
Partager