9
votes

Y a-t-il une fonction Java qui analyse des caractères échappés?

Je cherche une fonction Java intégrée qui, par exemple, peut convertir "\\ n" dans "\ n" .

quelque chose comme ça : xxx

ou dois-je rechercher manuellement - et remplacer tous les caractères échappés?


1 commentaires

Voulez-vous dire que vous voulez remplacer \\ N avec un personnage de nouvelle ligne?


4 Réponses :


1
votes

Utilisez simplement la méthode de remplacement de Strings propre. XXX PRE>

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());


2 commentaires

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.



4
votes

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: xxx


0 commentaires

12
votes

1 commentaires

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



0
votes

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);


0 commentaires