我想用一个空格替换字符串中的每个单独的字符,这个空格不在以下字符中,
- 数字0到9
- 大写和小写英文字母
- 这些特殊字符
: &'(),-._
例如,如果我的初始字符串是
aaa!bb@123&xyz#--
那么它应该变成
aaa bb 123&xyz --
有人能提供一个正则表达式来实现同样的目的吗?
您可以使用一个否定的字符集,并将所有不想用空格替换的字符都放进去。Rest任何字符都将替换为空格。以下是相同的Java代码。
String s = "abc#1$xyz";
System.out.println("Before: " + s);
System.out.println("After: " + s.replaceAll("[^\w &'(),.:-]", " "));
打印以下输出,
Before: abc#1$xyz
After: abc 1 xyz
正如您所看到的,#
和$
不在否定字符集中,因此它们被替换为空格。
您可以使用.replaceAll
来实现这一点。此方法查找字符串中的每个正则表达式匹配项,并用另一个字符串替换它们。
您的代码将如下所示:
String str = "Text/containing+invalid=characters";
String cleanStr = str.replaceAll("[^&'\(\),\-.0-9:A-Z_a-z]", " ");
System.out.println(cleanStr);
更多信息点击这里