1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public static String decode(String input) {
Pattern pattern = Pattern.compile("\\\\u([A-Fa-f0-9]{4})");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
// Si on trouve au moins un élément on utilise un StringBuffer
// pour recréer complètement la chaine de caractère
StringBuffer sb = new StringBuffer();
do {
// Et pour chacun des codes trouvés :
// 1. On récupère le nombre en hexa
String value = matcher.group(1);
// On le convertie en int, puis en char (type compatible)
char c = (char) Integer.parseInt(value, 16);
// Et on effectue le remplacement dans le StringBuffer :
matcher.appendReplacement(sb, Character.toString(c));
} while (matcher.find());
// On complète la chaine :
matcher.appendTail(sb);
// Et on retourne la nouvelle chaine :
return sb.toString();
}
// Sinon on retourne la chaine en entrée (aucune modif)
return input;
} |
Partager