Java相当于Perl的///运算符?

我有一些代码,我正在从Perl转换为Java。 它大量使用正则表达式,包括s///运算符。 我已经使用Perl很长一段时间了,我仍然习惯于Java的做事方式。 特别是,Strings似乎更难以使用。 有没有人知道或者有一个完全实现s///的Java函数? 所以它可以处理这样的事情,例如:

 $newString =~ s/(\bi'?\b)/\U$1/g; 

(也许不是一个很好的例子,但你明白了。)谢谢。

看看String的replaceAll(…)方法。 请注意,Java不支持\U (大写)function。

没有什么比这更整洁,但在Java中你可以使用String.replaceAll()或使用Pattern来做类似的事情:

 Pattern p = Pattern.compile("(\bi'?\b)"); Matcher m = p.matcher(stringToReplace); m.replaceAll("$1"); 

检查Pattern文档中的Java正则表达式语法 – 它与Perl完全不重叠。


要获得大写,请查看Matcher.appendReplacement

 StringBuffer sb = new StringBuffer(); while (m.find()) { String uppercaseGroup = m.group(1).toUpperCase(); m.appendReplacement(sb, uppercaseGroup); } m.appendTail(); 

不像上面引用的jakarta-oro库那样接近Perl,但肯定有一些内置于库中的帮助。

给定一个String类的实例,您可以使用.replaceAll()方法,如下所示:

 String A = "Test"; A.replaceAll("(\bi'?\b)","\U$1"); 

编辑 – 好吧太慢了。 显然也是\ U根据另一个答案不支持。

注意 – 我不确定贪婪符号是如何转换的,如果您需要特定的话,可能需要尝试查看Java的实现。