为什么替换所有方法不起作用?
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。
我正在测试 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。