2012-05-17 7 views
5

Poszukuję rozwiązania konwersji ciągów znaków, takich jak '\' 'n' na '\ n', bez pisania przełącznika dla wszystkich możliwych poleceń białych znaków, takich jak ('\ t', '\ r ',' \ n ', itp.)Biała sekwencja znaków do Whitespace

Czy jest coś, na co można polegać, lub sprytny trik?

+2

Można użyć [Apache Commons Lang] (http: // commons.apache.org/lang/)'s [StringEscapeUtils] (http://commons.apache.org/lang/api-release/org/apache/commons/lang3/StringEscapeUtils.html). – McDowell

+0

Trudne do pełnego zrozumienia pytania. Czy możesz podać dane wejściowe i oczekiwane wyniki? – anubhava

+0

prawdopodobny duplikat [Howto unescape literał napisany w języku Java w Javie] (http://stackoverflow.com/questions/3537706/howto-unescape-a-java-string-literal-in-java) –

Odpowiedz

3

Nie, raz skompilowany, "\\n" nie ma nic wspólnego z "\n" afaik. Sugerowałbym robi coś w następujący sposób:

Czysta Java:

String input = "\\n hello \\t world \\r"; 

String from = "ntrf"; 
String to = "\n\t\r\f"; 
Matcher m = Pattern.compile("\\\\(["+from+"])").matcher(input); 
StringBuffer sb = new StringBuffer(); 
while (m.find()) 
    m.appendReplacement(sb, "" + to.charAt(from.indexOf(m.group(1)))); 
m.appendTail(sb); 

System.out.println(sb.toString()); 

Korzystanie z Apache Commons StringEscapeUtils:

import org.apache.commons.lang3.StringEscapeUtils; 

... 

System.out.println(StringEscapeUtils.unescapeJava(input));