2012-05-17 101 views
5

我正在寻找一种解决方案,将'\''n'字符序列转换为'\ n',而无需为所有可能的空格命令(如'('\ t','\ r' ','\ n'等)空白字符序列为空白

有没有内置的东西或聪明的技巧来做到这一点?

+2

你可以使用[阿帕奇共享郎(HTTP:// commons.apache.org/lang/)的[StringEscapeUtils](http://commons.apache.org/lang/api-release/org/apache/commons/lang3/StringEscapeUtils.html)。 – McDowell

+0

很难完全理解这个问题。你能提供一些输入和预期的输出吗? – anubhava

+0

可能的重复[How to unescape Java中的Java字符串](http://stackoverflow.com/questions/3537706/howto-unescape-a-java-string-literal-in-java) –

回答

3

不,一经编译,"\\n""\n" afaik无关。我建议做一些如下:

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

使用Apache下议院StringEscapeUtils:

import org.apache.commons.lang3.StringEscapeUtils; 

... 

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