|
|
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有点复杂,您也可以自己实现一些更快(但可能不太可读)的替换引擎:
这可能有一些错误:) 这样做的好处是您只需遍历输入一次。最大的缺点是它不太容易理解。你也可以写一个状态机,分析每个字符的新状态应该是什么,这可能会更快,甚至更多的工作。 |
|
|
DotFX · RegEx捕获关键字前但括号后的所有内容 9 月前 |
|
|
con · Negative Lookaward在perl正则表达式中不起作用 10 月前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 10 月前 |
|
|
iato · 确保正则表达式不从命名材料中的数字中提取 10 月前 |
|
|
vr8ce · 非成对标记中特定字符的正则表达式 10 月前 |
|
|
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 10 月前 |
|
|
Carsten · 使用最近的搜索模式更改文本块 10 月前 |