用空格替换Java中的破折号和逗号

时间:2015-04-02 06:38:59

标签: java regex

我正在尝试使用Java中的replaceall函数删除所有破折号( - )和逗号(,)。但是,我只能删除短划线或逗号。我该如何解决这个问题?

if (numOfViewsM.find()){
    if (numOfViewsM.toString().contains(","))
    {
        numOfViews =Integer.parseInt(numOfViewsM.group(1).toString().replaceAll(",", ""));
    }
    else if (numOfViewsM.toString().contains("-"))
    {
        numOfViews = Integer.parseInt(numOfViewsM.group(1).toString().replaceAll("-", ""));
    }
    else
        numOfViews = Integer.parseInt(numOfViewsM.group(1));
}

4 个答案:

答案 0 :(得分:4)

replaceall(regex, String)方法采用正则表达式。你可以使用像

这样的语句来做到这一点
String output= str.replaceAll("[-,]", "");

答案 1 :(得分:1)

您可以尝试:

String result = numOfViewsM.replaceAll("[-,]", "");

因为replaceAll()方法的第一个参数是正则表达式。

答案 2 :(得分:1)

忘记contains()。使用:

public static void main(String[] args) {
    String s = "adsa-,adsa-,sda";
    System.out.println(s.replaceAll("[-,]", ""));
}

O / P:

adsaadsasda

答案 3 :(得分:1)

您当前的代码如下所示

if string contains ,
   remove , 
   parse
else if string contains -
   remove - 
   parse
else 
   parse

如您所见,所有案例都因else if部分而相互排斥,这意味着您可以删除-,。您可以通过删除else关键字并在清除数据后移动parse部分来改善它,例如

if string contains ,
   remove , 
if string contains -
   remove - 
parse

但是你甚至不应该首先检查你的文字contains ,-,因为它会让你遍历你的字符串一次,直到它找到搜索到的字符。您还需要使用replaceAll方法第二次遍历,这样您就可以将代码更改为

remove , 
remove - 
parse

甚至更好

remove , OR - 
parse

由于replaceAll需要regex,您可以将-,条件写为-|,甚至[-,](使用character class

replaceAll("-|,","")

但是如果你的标题是正确的,你可能不想通过用空字符串替换它们来删除这些字符,而是用空格替换

replaceAll("-|,"," "); //replace with space, not with empty string
//               ^^^