0

我有一个巨大的字符串需要替换

Pattern A to pattern B
Pattern C to Pattern D
pattern E to pattern F

像 5 或 6 次我必须替换字符串的某些部分。

如果我做一个直接的字符串操作来一个一个地替换它们,它会占用巨大的堆空间。

喜欢replaceAll().replaceAll().replaceALL

pattern.compile("(模式 a|patternc)"); 他不会是因为我们只能用 1 parrten x 替换这种类型的模式。

什么可能是一种内存有效的方式来进行这种替换。

正则表达式有没有办法做到这一点?

4

1 回答 1

1

我通常信任 apache,他们有你需要的东西,但我不能评论他们实现多个字符串替换的内存效率

Apache StringUtils.ReplaceEachRepeatedly

从查看源代码来看,它似乎使用带有递归调用的 StringBuffer 操作,所以它应该有点内存效率(我不认为你会用完堆栈空间)

链接到 Apache 的 ReplaceEach 的源代码

编辑:Apache Commons Lang 版本 3 实际上使用 StringBuilder 并试图在字符串替换期间最小化内存使用量。我强烈建议您查看源代码或直接使用该库。

于 2012-11-29T21:05:25.497 回答