我正在測驗類的replaceAll()方法,但String我遇到了問題。
我不明白為什么我的代碼沒有用空字串替換空格。
這是我的代碼:
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
uj5u.com熱心網友回復:
問題是在此之后您的字串中沒有空格:
str = str.replaceAll("[^a-zA-Z]", "");
它將所有不是字母的字符(包括空格)替換為空白(有效地洗掉它)。
向該字符類添加空格,這樣它們就不會被攻擊:
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();以洗掉前導空格。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/433691.html
上一篇:根據給定的字串加/減/或乘
下一篇:如何在Go中找到最長的匹配子串
