为什么替换所有方法不起作用?

Why is the replace all method not working?

我正在测试 String class 的 replaceAll() 方法,但我遇到了问题。

我不明白为什么我的代码没有用空字符串替换空格。

这是我的代码:

public static void main(String[] args) {
    String str = " I like pie!@!@!      It's one of my favorite things !1!!!1111";
    str = str.toLowerCase();
    str = str.replaceAll("\p{Punct}", "");
    str = str.replaceAll("[^a-zA-Z]", "");
    str = str.replaceAll("\s+", " ");
    System.out.print(str);

}

输出:

ilikepieitsoneofmyfavoritethings

问题是在你的字符串中没有白色space:

str = str.replaceAll("[^a-zA-Z]", "");

用空格替换所有不是字母的字符,包括白色spaces(有效删除)。

为那个角色添加白色space class 这样他们就不会被击中:

str = str.replaceAll("[^a-zA-Z\s]", "");

并且这一行可能会被删除:

str = str.replaceAll("\p{Punct}", "");

因为它是多余的。

最终代码:

String str = " I like pie!@!@!      It's one of my favorite things !1!!!1111";
str = str.toLowerCase();
str = str.replaceAll("[^a-zA-Z\s]", "");
str = str.replaceAll("\s+", " ");
System.out.print(str);

输出:

 i like pie its one of my favorite things 

您可能需要添加 str = str.trim(); 以删除前导 space。