java - 将某些模式的字符串替换为某些模式

标签 java

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

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/

相关文章:

java - 是否已更新 JavaBean 规范以反射(reflect)注解的存在

java - 从 java 传递 int 和 string 参数执行 shell 文件

java - 使用 shell 和对齐按钮调整表的大小?

java - 可序列化类 X 未声明 long 类型的静态最终 serialVersionUID 字段

java - 连接 JDBC 时出错

java - jsp bean 的范围请求不起作用

java - Spring Autowiring 无法看到上下文 bean,除非在基础包上定义了组件扫描

java - Android Studio:将字符串从HashMap转换为Uri后,尝试播放音频时出现java.io.FileNotFoundException

JavaFX8 : exception when adding items to ObservableList: ConcurrentModificationException

java - 如何处理具有相同 catch block 的解析数字?