用Java替换数据的最快方法

时间:2011-04-07 22:24:19

标签: java string

我需要编写一个Java方法:

  • 从数据表中检索HTML
  • 在HTML中搜索特定标记(嵌入在评论中)
  • 将该标记替换为更多HTML

例如,原始HTML可以有页眉,标记和页脚。我想获得HTML并将标记替换为页面内容,如博客文章。

我主要关心的是速度和功能。由于原始HTML和要注入原始HTML的HTML可能非常大,我需要一些建议。

我知道我可以使用Strings并使用String.replace(),但是我担心String的大小限制以及它的执行速度。

我也在考虑使用Reader / Writer对象,但我不知道是否会更快。

我知道有一个Java Clob对象,但我真的不知道它是否可以用于我的特定情况。

欢迎任何想法/建议。

谢谢,

3 个答案:

答案 0 :(得分:2)

使用Reader流式传输数据,动态解析数据以找到您的标记,并在您使用Writer将数据流式传输时替换数据。

是的,您必须编写解析器来执行此操作。

不要将其加载到大缓冲区,执行搜索和正则表达式以及缓冲区中的任何内容,然后将其写出来。处理数据一次是你能做的最快的事情。

如果您稍后在文件中有数据会填写文件中较高的位置,那么您就会陷入困境。

最后,为什么你不只是使用像Apache Velocity这样的东西?

答案 1 :(得分:1)

您的HTML有多大?一千兆字节?一兆字节? 10万? 10K?对于除了第一个之外的所有,字符串操作都会很好。如果该答案不能满足您的要求,请使用indexOf()查找标记的开头和结尾,并使用substring()在前后写入原始字符串的部分。

答案 2 :(得分:0)

StringBuilder(不是线程安全)和StringBuffer(threadsafe)是String操作的两个基本结构。但是,如果您正在从流中读取数据,那么如果您在运行中执行此操作可能会更好。 (读取行,查找标记,如果找到写入内容而不是它)