为什么这段代码不起作用?
public static void main(String[] args) {
String s = "You need the new version for this. Please update app ...";
System.out.println(s.replaceAll(". ", ".\\\\n").replaceAll(" ...", "..."));
}
这是我想要的输出:
您需要新版本。\ n请更新应用...
感谢您提供的信息
答案 0 :(得分:3)
String.replaceAll
方法将Regex作为第一个参数。
所以你需要转义 dot (.
),因为它在Regex中具有特殊含义,它与任何角色匹配。
System.out.println(s.replaceAll("\\. ", ".\\\\n").replaceAll(" \\.\\.\\.", "..."));
但是,对于您的输入,您可以简单地使用String.replace
方法,因为它不需要Regex
,并且具有额外的优势。
答案 1 :(得分:1)
.
是一个特殊的正则表达式字符,可以匹配任何内容。你需要像这样逃避它:\\.
因此要匹配三个点,您必须使用以下正则表达式:"\\.\\.\\."
你想要的是
s.replaceAll("\\. ", ".\n").replaceAll(" \\.\\.\\.", "...")
答案 2 :(得分:1)
您不应该使用replaceAll
- 而是使用replace
。 replaceAll
在此处不需要时会采用正则表达式(因此效率会不必要地低效)。
String s = "You need the new version for this. Please update app ...";
System.out.println(s.replace(". ", ".\\n").replace(" ...", "..."));
(另请注意,我已将".\\\\n"
替换为".\\n"
,这会产生所需的输出。)
答案 3 :(得分:0)
尝试
System.out.println(s.replace(". ", ".\n").replace(" ...", "..."));
这给出了
You need the new version for this.
Please update app...