java - 从字符串中删除字符: Regular expression or Manually

标签 java regex string

从字符串中删除字符的更好方法(时间和空间):

方法 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/

相关文章:

c++ - 如何让 PCRE 与 Code::blocks 一起正常工作?

python - 使用 RegEx 从 Excel 工作表捕获日期

c++ - 为什么字符串中的最后一个符号在 'std::remove' 之后加倍?

java - 如何使用 quartz 每 2 分钟在 mule 中运行一次查询

正则表达式 - 如何排除单个单词?

Python re.sub 算慢吗?

java - 访问字符串中超过 2^31 个字符的字符

java - GAE : How is it possible to access data/files that are stored in the GAE Blobstore by an external Web Service that is not deployed on GAE using Java

java - 有哪些(您推荐的)改进编码风格的好资源?

java - 如何在 Java 应用程序中嵌入 V8?