在Java中执行大量字符串替换的最快方法

Ave*_*oes 11 java regex string

我必须编写某种解析器来获取String并用其他字符替换某些字符集.代码如下所示:

noHTMLString = noHTMLString.replaceAll("</p>", "\n");
noHTMLString = noHTMLString.replaceAll("<br/>", "\n\n");
noHTMLString = noHTMLString.replaceAll("<br />", "\n\n");
//here goes A LOT of lines like these ones
Run Code Online (Sandbox Code Playgroud)

该函数非常长并且执行许多字符串替换.这里的问题是它需要花费很多时间,因为它被称为很多次的方法,从而降低了应用程序的性能.

我已经阅读了一些关于使用StringBuilder作为替代方案的一些线程,但它缺少ReplaceAll方法,并且正如此处所述,string.replaceAll()性能是否受到字符串不变性的影响?String类中的replaceAll方法适用于

Match Pattern&Matcher和Matcher.replaceAll()使用StringBuilder存储最终返回的值,因此我不知道切换到StringBuilder是否会真正减少执行替换的时间.

您是否知道以快速方式快速完成大量String替换?你对这个问题有什么建议吗?

谢谢.

编辑:我必须创建一个报告,其中包含一些带有html文本的字段.对于每一行,我正在调用替换这些字符串中的所有html标记和特殊字符的方法.使用完整报告,解析所有文本需要3分钟以上.问题是我必须经常调用该方法

Mat*_* B. 12

我发现org.apache.commons.lang.StringUtils是最快的,如果你不想打扰StringBuffer.

你可以像这样使用它:
noHTMLString = StringUtils.replace(noHTMLString, "</p>", "\n");

我做的性能测试比我自定义的StrinBuffer解决方案更糟糕,类似于@extraneon提出的解决方案.


Mar*_*urg 6

它看起来像你在那里解析HTML,你有没有使用第三方库而不是重新发明轮子?


归档时间:

查看次数:

17081 次

最近记录:

14 年,10 月 前