我有一些代码,我正在从Perl转换为Java.它大量使用正则表达式,包括s///运算符.我已经使用Perl很长一段时间了,我仍然习惯于Java的做事方式.特别是,Strings似乎更难以使用.有没有人知道或拥有完全实现的Java功能s///?所以它可以处理这样的事情,例如:
$newString =~ s/(\bi'?\b)/\U$1/g;
Run Code Online (Sandbox Code Playgroud)
(也许不是一个很好的例子,但你明白了.)谢谢.
没有什么比这更整洁,但在Java中你可以使用String.replaceAll()或使用Pattern来做类似的事情:
Pattern p = Pattern.compile("(\bi'?\b)");
Matcher m = p.matcher(stringToReplace);
m.replaceAll("$1");
Run Code Online (Sandbox Code Playgroud)
检查Pattern文档以获取Java的正则表达式语法 - 它与Perl完全不重叠.
要获得大写,请查看Matcher.appendReplacement:
StringBuffer sb = new StringBuffer();
while (m.find()) {
String uppercaseGroup = m.group(1).toUpperCase();
m.appendReplacement(sb, uppercaseGroup);
}
m.appendTail();
Run Code Online (Sandbox Code Playgroud)
不像上面引用的jakarta-oro库那样接近Perl,但肯定有一些内置于库中的帮助.