|
|
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有点复杂,您也可以自己实现一些更快(但可能不太可读)的替换引擎:
这可能有一些错误:) 这样做的好处是您只需遍历输入一次。最大的缺点是它不太容易理解。你也可以写一个状态机,分析每个字符的新状态应该是什么,这可能会更快,甚至更多的工作。 |
|
Ben · 统计向量中的单词在字符串中出现的频率 1 年前 |
|
|
bear_525 · 从列中删除中间名和首字母,并保存在单独的列中 1 年前 |
|
|
asdfadf · 为什么具有相同内存值的字符串和整数打印方式不同? 1 年前 |
|
|
user764754 · 防止多行原始字符串文字中出现新行字符 1 年前 |
|
|
Bogaso · 从列表中返回与模式匹配的元素 1 年前 |
|
|
Jasco · 如何使用VBA提取两个相似字符之间的字符串中的单词? 1 年前 |