【发布时间】:2011-05-16 03:58:51
【问题描述】:
我必须编写某种解析器来获取字符串并将某些字符集替换为其他字符集。代码如下所示:
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
该函数很长并且执行大量字符串替换。这里的问题是它需要很多时间,因为它被多次调用的方法会降低应用程序的性能。
我在这里阅读了一些关于使用 StringBuilder 作为替代方法的主题,但它缺少 ReplaceAll 方法,正如这里提到的 Does string.replaceAll() performance suffer from string immutability? String 类中的 replaceAll 方法适用于
Match Pattern & Matcher 和 Matcher.replaceAll() 使用 StringBuilder 来存储最终返回的值 所以我不知道切换到 StringBuilder 是否真的会减少执行替换的时间。
您知道快速进行大量字符串替换的快速方法吗?您对这个问题有什么建议吗?
谢谢。
编辑:我必须创建一个报告,其中包含一些带有 html 文本的字段。对于每一行,我都调用了替换这些字符串中的所有 html 标记和特殊字符的方法。使用完整的报告,解析所有文本需要 3 分钟以上。问题是我必须经常调用该方法
【问题讨论】:
-
是什么让你慢了下来? - 你的 noHTMLString 文本的长度,或者你是否经常调用这三个语句?
-
我必须创建一个报告,其中包含一些带有 html 文本的字段。对于每一行,我都调用了替换这些字符串中的所有 html 标记和特殊字符的方法。使用完整的报告,解析所有文本需要 3 分钟以上。所以我的问题是我必须经常调用该方法。