gpt4 book ai didi

java - String.replaceAll() 和\n 换行符

转载 作者:行者123 更新时间:2023-12-01 06:49:58 26 4
gpt4 key购买 nike

我尝试用一​​个小例子来解释我的问题。我实现了版本1和版本2,但没有得到想要的结果。我必须使用哪个替换参数才能获得 replaceAll 所需的结果方法?

版本 1:

String s = "TEST";
s = s.replaceAll("TEST", "TEST\nTEST");
System.out.println(s);

输出:

TEST

TEST



版本 2:

String s = "TEST";
s = s.replaceAll("TEST", "TEST\\nTEST");
System.out.println(s);

输出:

TESTnTEST



期望的输出:

TEST\nTEST

最佳答案

来自javadoc of String#replaceAll(String, String) :

Note that backslashes (\) and dollar signs ($) in the replacement string may cause the results to be different than if it were being treated as a literal replacement string; see Matcher.replaceAll. Use Matcher.quoteReplacement(java.lang.String) to suppress the special meaning of these characters, if desired.

s = s.replaceAll("TEST", Matcher.quoteReplacement("TEST\\nTEST"));

您仍然需要 2 个反斜杠,因为 \ 是字符串文字的元字符。

<小时/>

您也可以使用 4 个反斜杠而不使用 Matcher.quoteReplacement:

  • 您希望输出中有一个 \
  • 您需要使用 \ 对其进行转义,因为 \ 是替换字符串的元字符:\\
  • 您需要使用 \ 对两者进行转义,因为 \ 是字符串文字的元字符:\\\\
s = s.replaceAll("TEST", "TEST\\\\nTEST");

关于java - String.replaceAll() 和\n 换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37328805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com