2009-08-25 10 views

Respuesta

1

Simplemente use las cadenas propias replaceAll método.

result = myString.replaceAll("\\n", "\n"); 

Sin embargo, si desea hacer coincidir todas las secuencias de escape, entonces podría utilizar un Matcher. Consulte http://www.regular-expressions.info/java.html para obtener un ejemplo muy básico del uso de Matcher.

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

Solo necesita hacer que la tarea sea más sofisticada según el número y tipo de escapes que desee manejar. (Advertencia: Este es el código de aire, no estoy de Java desarrollador)

+0

¿No será eso una pérdida de rendimiento si hago un reemplazo para todos los caracteres que se puedan escapar, es decir, 8 veces? (http://java.sun.com/docs/books/tutorial/java/data/characters.html) –

+0

Lo siento, solo le estaba mostrando un artículo a su caso simple (es un reflejo de que muchos de nosotros lo hacemos) realmente responda su pregunta). Es por eso que te señalo en la clase Matcher, que en combinación con un StringBuffer puedes crear una cadena de resultados en una sola pasada. – AnthonyWJones

3

Anthony es 99% correcto - desde la barra invertida es también un carácter reservado en expresiones regulares, que necesita ser escapado por segunda vez:

result = myString.replaceAll("\\\\n", "\n"); 
0

Si no desea listar todos los posibles caracteres de escape puede delegar en el comportamiento Propiedades

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

Este mango todos los caracteres posibles

Cuestiones relacionadas