我有一个巨大的字符串,我需要替换
Pattern A to pattern B
Pattern C to Pattern D
pattern E to pattern F
大概有五六次我必须替换字符串的某些部分。
如果直接进行字符串操作来一一替换,会占用巨大的Heap空间。
像replaceAll().replaceAll().replaceALL
pattern.compile("(模式a|patternc)");他不会吗,因为我们只能用 1 个 parrten x 替换这种类型的模式。
什么是内存有效的方法来进行这种替换。
正则表达式有什么办法可以做到这一点吗?
最佳答案
我通常信任apache,他们有你需要的东西,但我无法评论他们实现多个字符串替换的内存效率
Apache StringUtils.ReplaceEachRepeatedly
从源代码来看,它似乎使用了带有递归调用的 StringBuffer 操作,因此它应该具有一定的内存效率(我认为您不会耗尽堆栈空间)
Linky to the source code to the Apache's ReplaceEach
编辑:Apache Commons Lang 版本 3 实际上使用 StringBuilder,并试图最大限度地减少字符串替换期间的内存使用。我强烈建议您查看源代码或直接使用该库。
关于java - 将某些模式的字符串替换为某些模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13634631/