替换所有特殊字符,数字和字母

时间:2014-09-27 18:08:51

标签: java regex string replace replaceall

这是代码

String a="abcd ABCD 0123 !@#$%^&*()";

这是替换数字和语言的语法。带空格的字母

a = a.replaceAll("[a-zA-Z0-9]","");

这是用空格

替换特殊字符的语法
a = a.replaceAll("[^\\w\\s-_]","");

那么如何将这两种语法结合起来用空格替换特殊字符,数字和字母而不使用此方法a = a.replaceAll(".","");将整个字符串替换为空白?

还有其他方法吗?

3 个答案:

答案 0 :(得分:1)

我不确定你想要实现什么,但是如果你想组合两个字符集,你可以

  • 使用OR
  • [oneSet]|[secondSet]运算符
  • 将它们放在[[oneSet][secondSet]]之类的其他设置中
    • 也可以简化为[oneSet[secondSet]],所以也许你正在寻找像
    • 这样的东西
a = a.replaceAll("[a-zA-Z0-9[^\\w\\s-_]]","");

演示:我将用X替换找到的字符,以准确显示更换的字符

String a = "abcd ABCD 0123 !@#$%^&*()";
System.out.println(a.replaceAll("[a-zA-Z0-9]", "X"));
System.out.println(a.replaceAll("[^\\w\\s-_]", "X"));
System.out.println(a.replaceAll("[a-zA-Z0-9[^\\w\\s-_]]", "X"));

输出:

XXXX XXXX XXXX !@#$%^&*()
abcd ABCD 0123 XXXXXXXXXX
XXXX XXXX XXXX XXXXXXXXXX

答案 1 :(得分:0)

|

结合使用
a=a.replaceAll("[a-zA-Z0-9]|[^\\w\\s-_]", "");

答案 2 :(得分:0)

或者,您可以使用以下内容来说明换行符

String s = "abcd ABCD 0123 !@#$%^&*()";
System.out.println(s.replaceAll("(?s)."," "));