La Chaîne d'impression à l'évasion non caractères imprimables
J'ai cette Chaîne
String x="String containning special chars \u202C \n \u202C \u202C \u202C";
Comment puis-je imprimer cette: String containning special chars \u202C \n \u202C \u202C \u202C
?
Essayé
System.out.println(x.replace("\\","\\\\"));
Mais qui n'imprime que String containning special chars \n
Aussi essayé
String out = org.apache.commons.lang3.StringEscapeUtils.unescapeJava(x);
System.out.println(out);
Mais qui ne l'aide pas.
Tout avec une suggestion ou une API que je ne suis pas au courant?
MISE À JOUR DE LA SOLUTION
Suivant @lbear l'approche, je suis venu avec cette fonction qui traite la plupart des cas, de s'échappa des Chaînes
public static String removeUnicodeAndEscapeChars(String input) {
StringBuilder buffer = new StringBuilder(input.length());
for (int i = 0; i < input.length(); i++) {
if ((int) input.charAt(i) > 256) {
buffer.append("\\u").append(Integer.toHexString((int) input.charAt(i)));
} else {
if (input.charAt(i) == '\n') {
buffer.append("\\n");
} else if(input.charAt(i) == '\t'){
buffer.append("\\t");
}else if(input.charAt(i) == '\r'){
buffer.append("\\r");
}else if(input.charAt(i) == '\b'){
buffer.append("\\b");
}else if(input.charAt(i) == '\f'){
buffer.append("\\f");
}else if(input.charAt(i) == '\''){
buffer.append("\\'");
}else if(input.charAt(i) == '\"'){
buffer.append("\\");
}else if(input.charAt(i) == '\\'){
buffer.append("\\\\");
}else {
buffer.append(input.charAt(i));
}
}
}
return buffer.toString();
}
- avez-vous essayé ce lien. stackoverflow.com/questions/4787769/...
- comment cela peut-il être d'une quelconque aide pour moi?
- Je vois aussi ce post plus tôt, mais il a totalement ne fonctionne pas stackoverflow.com/questions/7535317/how-to-replace-with-in-java
Vous devez vous connecter pour publier un commentaire.
Utilisation
Integer.toHexString((int)x.charAt(34));
, vous pouvez obtenir la chaîne de caractères de l'unicode des caractères et ajouter\\u
avant, vous obtiendrez laString
.System.out.print()
pour obtenir le résultat souhaité?replace()
, il peut trouver \ conduisant le char unicode.Il est le Apache Commons StringEscapeUtils qui a de codage HTML. Cet encodage est assez proche de ce que vous pourriez avoir besoin
Voir la doc
original.replace("\u202C", "\\u202C").replace("\n", "\\n");
mais je suis à la recherche d'une plus générale de la solution