我正在尝试使用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));
}
答案 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
// ^^^