1
12
我发现org.apache.commons.lang.StringUtils是最快的,如果你不想使用StringBuffer的话。
你可以这样使用它:
我做了性能测试,它比我定制的StrinBuffer解决方案更糟糕,类似于@extraneon提出的解决方案。 |
2
6
看起来你在那里解析HTML,你有没有想过使用 3rd party library 而不是重新发明轮子? |
3
4
我同意Martijn使用一个现成的解决方案,而不是自己解析它-javax.xml包中有很多东西内置到Java中。一个好的解决方案是使用XSLT转换来替换,这看起来是一个理想的用例。然而,这是复杂的。
为了回答这个问题,你考虑过使用
regular expression libraries
? 看起来您有许多不同的东西要匹配,并替换为相同的东西(\n或空字符串)。使用正则表达式可以是
|
4
3
我完全同意马蒂金的观点。为工作选择合适的工具。 但是,如果您的文件不是HTML,而是只包含一些HTML标记,那么有几种方法可以加快速度。 首先,如果某些输入量不包含可替换元素,请考虑从以下内容开始:
其次,考虑regex:
不要为每一行replaceAll创建一个模式,而是尝试将它们组合起来(regex有一个OR运算符),让模式优化regex。使用 编译的 模式,而不是在每次调用中编译它,它相当昂贵。 如果regex有点复杂,您也可以自己实现一些更快(但可能不太可读)的替换引擎:
这可能有一些错误:) 这样做的好处是您只需遍历输入一次。最大的缺点是它不太容易理解。你也可以写一个状态机,分析每个字符的新状态应该是什么,这可能会更快,甚至更多的工作。 |
lonix · 使用sed从JSON中提取非贪婪正则表达式 1 年前 |
Dima Malko · 如何在指定符号前添加符号? 2 年前 |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
Katia · 根据特定规则进行多行匹配 2 年前 |
MHA · Pandas str.extract()以字母结尾的数字 2 年前 |
Slava Vir · 如何查找后面“/”之间的最后一组 2 年前 |