我有一个巨大的字符串,我需要替换
Pattern A to pattern B
Pattern C to Pattern D
pattern E to pattern F
像5或6次我必须更换字符串的某些部分。
如果我执行直接字符串操作来逐个替换它们,则需要很大的堆空间。
赞replaceAll().replaceAll().replaceALL
pattern.compile(“(pattern a | patternc)”);他不是我bcoz我们只能用1 parrten x替换这种类型的模式。
这可能是一种记忆效率更高的方法。
正则表达式有没有办法实现这个目标?
答案 0 :(得分:1)
我通常信任apache并且他们拥有你需要的东西,但是我无法评论他们实现多个字符串替换的内存效率
Apache StringUtils.ReplaceEachRepeatedly
从查看源代码看起来它似乎使用StringBuffer操作和递归调用,所以它应该有点内存效率(我不认为你的堆栈空间不足)
编辑:Apache Commons Lang版本3实际上使用StringBuilder并尝试在字符串替换期间最小化内存使用。我强烈建议您查看源代码或直接使用库。