Dav*_*enz 0 java string replaceall
我试着通过一个小例子来解释我的问题.我实现了版本1和版本2,但我没有得到所需的结果.我必须使用哪个替换参数来使用replaceAll方法获得所需的结果?
版本1:
String s = "TEST";
s = s.replaceAll("TEST", "TEST\nTEST");
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)
输出:
测试
测试
版本2:
String s = "TEST";
s = s.replaceAll("TEST", "TEST\\nTEST");
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)
输出:
TESTnTEST
期望的输出:
TEST\NTEST
来自javadocString#replaceAll(String, String):
请注意,替换字符串中的反斜杠(
\)和美元符号($)可能会导致结果与将其视为文字替换字符串时的结果不同; 看Matcher.replaceAll.使用Matcher.quoteReplacement(java.lang.String)抑制这些字符的特殊含义,如果需要的话.
s = s.replaceAll("TEST", Matcher.quoteReplacement("TEST\\nTEST"));
Run Code Online (Sandbox Code Playgroud)
你仍然需要2个反斜杠,因为\字符串文字是一个元数据.
你也可以使用4个反斜杠Matcher.quoteReplacement:
\输出\,就像\替换字符串的元数据一样:\\\,以及\字符串文字的元数据:\\\\s = s.replaceAll("TEST", "TEST\\\\nTEST");
Run Code Online (Sandbox Code Playgroud)