Je cherche une fonction Java intégrée qui, par exemple, peut convertir quelque chose comme ça : p> ou dois-je rechercher manuellement - et remplacer tous les caractères échappés? p> p> "\\ n" code> dans "\ n" code>.
4 Réponses :
Utilisez simplement la méthode de remplacement de Strings propre. Toutefois, si vous souhaitez correspondre à toutes les séquences d'échappement, vous pouvez utiliser un correspondeur. Voir http://www.regular-expressions.info/java.html pour un Exemple très élémentaire d'utilisation de la correspondance. P> Pattern p = Pattern.compile("\\(.)");
Matcher m = p.matcher("This is tab \\t and \\n this is on a new line");
StringBuffer sb = new StringBuffer();
while (m.find()) {
String s = m.group(1);
if (s == "n") {s = "\n"; }
else if (s == "t") {s = "\t"; }
m.appendReplacement(sb, s);
}
m.appendTail(sb);
System.out.println(sb.toString());
Ce ne sera-t-il pas un drain de performance si je fais une lettre de remplacement pour chaque caractère escapadaire, c'est-à-dire 8 fois? ( Java.sun.com/docs/books/Tutorial/java /data/characters.html )
Désolé, je montrais juste un anwser à votre cas simple (c'est un coup de genou que beaucoup d'entre nous le font ne répondent pas vraiment à votre question). C'est pourquoi je vous pointe de vous mettre à la classe de correspondance, qui en combinaison avec un StringBuffer, vous pouvez créer une chaîne de résultat en une seule passe.
Anthony est à 99% à droite - puisque Backslash est également un caractère réservé dans des expressions régulières, il doit être échappé une seconde fois:
Vous pouvez utiliser stringscapepeutils.unescapejava (s) code> de Apache Commons Lang A >. Cela fonctionne pour toutes les séquences d'échappement, y compris les caractères Unicode (i.e. \ u1234 code>). P>
C'est ce que je cherchais! Eu des problèmes avec Unicode échappatoire des personnages de PHP's's's's's's's's
Si vous ne souhaitez pas répertorier tous les caractères évasés possibles, vous pouvez déléguer ceci au comportement des propriétés
String escapedText="This is tab \\t and \\rthis is on a new line";
Properties prop = new Properties();
prop.load(new StringReader("x=" + escapedText + "\n"));
String decoded = prop.getProperty("x");
System.out.println(decoded);
Voulez-vous dire que vous voulez remplacer \\ N avec un personnage de nouvelle ligne?