Java 需要一个高效的算法来实现String.replaceAll()
我在Java中找到了String.replaceAll(),其基础是正则表达式。它在短字符串中运行良好。 但是对于长字符串,我需要一个更有效的算法,而不是string.replaceAll()。 有人能给我建议吗?Java 需要一个高效的算法来实现String.replaceAll(),java,string,Java,String,我在Java中找到了String.replaceAll(),其基础是正则表达式。它在短字符串中运行良好。 但是对于长字符串,我需要一个更有效的算法,而不是string.replaceAll()。 有人能给我建议吗? 谢谢 您可以尝试String.replace(CharSequence目标,CharSequence替换)。它仍然使用模式和匹配器,但target不是正则表达式。您可以尝试String.replace(CharSequence-target,CharSequence-replacem
谢谢 您可以尝试
String.replace(CharSequence目标,CharSequence替换)
。它仍然使用模式和匹配器,但target
不是正则表达式。您可以尝试String.replace(CharSequence-target,CharSequence-replacement)
。它仍然使用模式和匹配器,但target
不是正则表达式。如果要进行增量替换,可以使用显式appendReplacement/Tail
循环到StringBuffer
(遗憾的是,到目前为止还没有StringBuilder
重载)
成语是这样的:
这就是replaceAll
的实现方式
这种方法的好处是,由于您可以完全控制替换迭代,因此在任何给定时间都不必将整个输出作为潜在的长字符串存储在内存中。您可以增量生成输出,定期将StringBuffer
内容刷新到磁盘。也就是说,使用此方法比使用replaceAll
更节省内存
(您还可以执行当前替换语法不支持的奇特替换,例如toUpperCase()
transformation)
请注意,Matcher
需要增强,以便能够附加到任何应用程序。如果授予,您不仅可以使用StringBuilder
,还可以直接替换为,例如
相关问题
-
- 具有有限替换和案例转换的示例
另见
-
- 如果批准,此增强请求将允许
Matcher
附加到任何可附加的
如果要进行增量替换,可以使用显式的appendReplacement/Tail
循环到StringBuffer
(遗憾的是,到目前为止还没有StringBuilder
重载)
成语是这样的:
这就是replaceAll
的实现方式
这种方法的好处是,由于您可以完全控制替换迭代,因此在任何给定时间都不必将整个输出作为潜在的长字符串存储在内存中。您可以增量生成输出,定期将StringBuffer
内容刷新到磁盘。也就是说,使用此方法比使用replaceAll
更节省内存
(您还可以执行当前替换语法不支持的奇特替换,例如toUpperCase()
transformation)
请注意,Matcher
需要增强,以便能够附加到任何应用程序。如果授予,您不仅可以使用StringBuilder
,还可以直接替换为,例如
相关问题
-
- 具有有限替换和案例转换的示例
另见
-
- 如果批准,此增强请求将允许
Matcher
附加到任何可附加的
如果你想要一个有意义的答案,你需要提供更多的细节。你说的是什么语言?replaceAll()非常适合一般情况。共享您试图搜索的特定字符串可能有助于找到更好的答案。如果您想要有意义的答案,则需要提供更多详细信息。您在说什么语言?replaceAll()针对一般情况进行了调整。共享您试图搜索的特定字符串可能有助于找到更好的答案。正是因为这在下面使用了模式
/马赫
,所以认为这在性能方面效率更高是错误的(尽管这应该是可以接受的).正是因为这在下面使用了模式
/马赫
,所以认为这在性能方面效率更高是错误的(尽管这应该是可以接受的)。
Pattern p = Pattern.compile(PATTERN);
Matcher m = p.matcher(INPUT_SOURCE);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, REPLACEMENT);
}
m.appendTail(sb);
System.out.println(sb.toString());