replaceAll for StringBuilder 与正则表达式支持?
2022-09-03 06:54:05
我已经查看了Java API和一些常见的第三方库,但我无法找到一个合适的方法来完成String.replaceAll所做的操作,除了StringBuilder。
我知道通过一点点工作,它可以为StringBuffer完成,但我不想走这条路,因为StringBuffer更慢。
有没有人知道任何第三方实用程序,或者是否有一段快速代码来实现此功能?
我已经查看了Java API和一些常见的第三方库,但我无法找到一个合适的方法来完成String.replaceAll所做的操作,除了StringBuilder。
我知道通过一点点工作,它可以为StringBuffer完成,但我不想走这条路,因为StringBuffer更慢。
有没有人知道任何第三方实用程序,或者是否有一段快速代码来实现此功能?
String.replaceAll
只是一种方便的方法。 是在Java中使用正则表达式的“实际”方式,并且允许更复杂的用例。Matcher.replaceAll
Matcher
此外,可以使用正则表达式方法完成的任何操作都可以在 .美的是,s 的工作不仅仅是 s: s 可以为任何(接口,由 、 和 实现)获得。因此,您只需执行以下操作:String
Matcher
Matcher
String
Matcher
CharSequence
StringBuilder
StringBuffer
String
CharBuffer
import java.util.regex.*;
...
StringBuilder sb = new StringBuilder();
sb.append("This works with StringBuffers");
Pattern p = Pattern.compile("\\Buffer\\B");
Matcher m = p.matcher(sb);
System.out.println(m.replaceAll("uilder"));
将输出 。This works with StringBuilders
正则表达式不会在内部修改可变组件。正则表达式解析 a 以返回 一个 ,其中 是结果。 是一个例外,因为有特殊的处理 - 至于 ,你必须用匹配结果修改它。CharSequence
CharSequence
String
String
StringBuffer
StringBuilder
CharSequence
您可以执行的操作:
// Class
private static final Pattern MY_PATTERN = Pattern.compile("my|regex");
{ // Method
StringBuilder builder;
// ...
Matcher m = MY_PATTERN.matcher(builder);
builder.replace(0, builder.length(), m.replaceAll("<b>$0</b>"));
}