作为输入,我得到字符串"some text\\nsome text"
- >如"some text\nsome text"
所示。
如何删除一个反斜杠并获取
"some text\nsome text"
- >显示为
"some text
some text"
那也适用于"\t"
等其他特殊字符?
使用正则表达式,它可以只做
textLine.replace("\\n", "\n") and so on.
还有其他办法吗?
答案 0 :(得分:8)
你不需要重新发明轮子。您可以将org.apache.commons.lang3.StringEscapeUtils
用于unescape Java字符串。 Unescapes在String中找到的任何Java文字。例如,它会将“\
”和“n
”的序列转换为换行符,除非“\
”前面有另一个“\
”。在这种情况下,你需要再次使用unescape。
<强>代码强>:
import static org.apache.commons.lang3.StringEscapeUtils.unescapeJava;
public class Unescape {
public static void main(String[] args) {
System.out.println("some text\\nsome text");
System.out.println(unescapeJava("some text\\nsome text"));
}
}
<强>输出强>:
some text\nsome text
some text
some text
答案 1 :(得分:0)
所以它不那么明显,你想从两个字符创建一个字符。
我制作了这个方法:
String res="";
boolean backslash=false;
for(char c : "some text\\nsome text".toCharArray()){
if(c!='\\'){
if(backslash){
switch(c){
case 'n' :
res+='\n';
break;
case 't' :
res+='\t';
break;
}
backslash=false;
}else{
res+=c;
}
}
else{
backslash=true;
}
}
也许它会对你有所帮助,它实际上只适用于我放入开关(EOL和Tab)的情况。
注意:如果想要更好的性能,请用StringBuilder替换String。
答案 2 :(得分:-1)
你在玩多行正则表达式吗? 然后你可以编译一个正则表达式:
Pattern.compile("^([0-9]+).*", Pattern.MULTILINE);
http://www.javamex.com/tutorials/regular_expressions/multiline.shtml