Jin*_*Kim 16 java regex string stringbuilder
我查看了Java API和一些常见的第三方库,但我找不到一个合适的方法来完成String.replaceAll所做的工作,但StringBuilder除外.
我知道有一点工作,可以为StringBuffer完成,但我不想走这条路,因为StringBuffer比较慢.
有没有人知道任何第三方实用程序,或者是否有快速代码来实现此功能?
String.replaceAll只是一种方便的方法Matcher.replaceAll.Matcher是在Java中使用正则表达式的"实际"方式,并允许更复杂的用例.
此外,任何可以使用正则表达式方法String完成的操作都可以使用类似的方法来完成Matcher.的优点是,即Matchers的不仅仅是工作StringS:MatcherS可为任何能够获得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"));
Run Code Online (Sandbox Code Playgroud)
会输出This works with StringBuilders.
Apache Harmony Matcher 源代码似乎完全可以修改,StringBuilder可以代替当前使用的StringBuffer,只需移至不同的包即可。它似乎并没有拖累很多依赖性。即使对于商业项目,位于文件开头的 Apache 许可证也可能不错。
GNU 类路径代码也可以重用,但那里的许可更加困难(您需要发布匹配器的更改版本,但可能不需要发布其余代码)。与原始 Sun 的实现相同,可以在OpenJDK 项目中找到。