用Java替换空格和其他一些字符

时间:2012-11-22 15:13:26

标签: java regex string replace

为什么这段代码不起作用?

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请更新应用...

感谢您提供的信息

4 个答案:

答案 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 - 而是使用replacereplaceAll在此处不需要时会采用正则表达式(因此效率会不必要地低效)。

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...