我有:
String str = "Hello, how, are, you";
我想创建一个帮助方法,从任何字符串中删除逗号。 以下哪项更准确?
private static String removeComma(String str){
if(str.contains(",")){
str = str.replaceAll(",","");
}
return str;
}
或
private static String removeComma(String str){
str = str.replaceAll(",","");
return str;
}
似乎我不需要IF语句,但可能有我这样做的情况。 如果有更好的方式让我知道。
答案 0 :(得分:10)
两者在功能上都是等效的,但前者更冗长,并且可能会更慢,因为它会运行额外的操作。
另请注意,您不需要replaceAll
(接受正则表达式):replace
会这样做。
所以我会选择:
private static String removeComma(String str){
return str.replace(",", "");
}
答案 1 :(得分:1)
除非您正在处理"字符串(我们说的是兆字节或更多)。
如果您正在使用IF语句,您的代码将首先搜索逗号的第一次出现,然后执行替换。如果逗号靠近字符串的末尾并且字符串很大,这可能会很昂贵,因为它必须遍历两次。
如果没有IF语句,将替换逗号(如果存在)。如果答案是否定的,那么你的字符串将不受影响。
底部规则:使用没有IF语句的版本。
答案 2 :(得分:1)
两者都是正确的,但第二个是更清洁的,因为不需要第一个替代方案的IF语句。
答案 3 :(得分:1)
这是在你的字符串世界中使用逗号字符串的概率是多少。
如果您的概率很高,请先调用方法replaceAll而不先检查。 但如果你没有使用极其庞大的字符串,我想你会发现性能没有差别。
答案 4 :(得分:1)
另一个时间复杂度为O(n),空间复杂度为O(n)的解决方案:
public static String removeComma(String str){
int length = str.length();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
char c = str.charAt(i);
if (c != ',') {
sb.append(c);
}
}
return sb.toString();
}