使用正则表达式替换不是数字,逗号或点的所有字符

时间:2018-06-21 15:29:51

标签: java regex replace

这就是我在做什么:

public static String replaceCharAt(String s, int pos, char c) {
    return s.substring(0, pos) + c + s.substring(pos + 1);
  }

for(int i=0;i<str.length();i++)
{
    if(str.charAt(i)!=',' || str.charAt(i)!='.' || !Character.isDigit(str.charAt(i)))
         replaceCharAt(str,i,'x');
}

但是我被告知正则表达式更有效。不幸的是,我不知道如何使用正则表达式,这是我第一次学习。

这是我用来替换所有非数字字符的正则表达式

str.replaceAll("\\D", "")

但是如何使点和逗号不被删除?

1 个答案:

答案 0 :(得分:5)

您可以使用否定的character class [^\d.,]+一次或多次不匹配数字,点或逗号。

在Java中:

String regex = "[^\\d.,]+";

Demo