从字符串中删除字符的更好方法(时间和空间):
方法 1:
String charsToRemove = "abc";
String myString = "abcdef";
myString = myString.replaceAll("["+charsToRemove+"]", "");
方法 2:
// Initialized to charsToRemove
HashSet<Character> charsToRemoveSet = ...
Character[] myCharArray = myString.toCharArray();
int dst = 0;
for(int src=0; src<myCharArray.length; src++) {
if(!charsToRemoveSet.contains(myCharArray[src]))
myCharArray[dst++] = myCharArray[src];
}
myString = new String(myCharArray, 0, dst);
最佳答案
从视觉上看,选项 1 更加清晰。仅此一点就足以让我选择它。它也可能更快(尽管这取决于输入的长度)。在选项二中,您要设置第二个循环。 HashSet.contains()
运行自己的循环,添加第二个延迟。
对于短字符串,您可能不会注意到差异,但同样,很难判断第二秒发生了什么。
关于java - 从字符串中删除字符: Regular expression or Manually,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14178580/