将转义的转义序列替换为其未转义的值

Lex*_*Lex 3 java regex

作为输入我得到字符串"some text\\nsome text"- >如图所示"some text\nsome text".如何删除一个反斜杠并获取 "some text\nsome text"- >显示为

"some text
some text"
Run Code Online (Sandbox Code Playgroud)

这也适用于其他特殊角色,如"\t"?使用正则表达式,它可以只做 textLine.replace("\\n", "\n") and so on.

还有另外一种方法吗?

Pau*_*gas 8

你不需要重新发明轮子.您可以使用org.apache.commons.lang3.StringEscapeUtilsunescape 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"));
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

some text\nsome text
some text
some text
Run Code Online (Sandbox Code Playgroud)