替换所有捕获的组
我需要将 "foo_bar_baz_2"
转换为 "fooBarBaz2"
我正在尝试使用此模式:
Pattern pattern = Pattern.compile("_([a-z])");
Matcher matcher = pattern.matcher("foo_bar_baz_2");
是否可以使用 matcher
将第一个捕获的组(“_”后面的字母)替换为大写的捕获组?
I need to transform something like: "foo_bar_baz_2"
to "fooBarBaz2"
I'm trying to use this Pattern:
Pattern pattern = Pattern.compile("_([a-z])");
Matcher matcher = pattern.matcher("foo_bar_baz_2");
Is it possible to use matcher
to replace the first captured group (the letter after the '_') with the captured group in upper case?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用匹配器的appendReplacement/appendTail方法,如下所示:
You can use appendReplacement/appendTail methods of the matcher like this:
是的。替换为
\U$1\E
- 表示为 Java 字符串"\\U$1\\E"
只要您的正则表达式中没有其他内容,您就可以转储
\E
并缩短为\U$1
。考虑到 @TimPietzcker 的评论,您的正则表达式本身应该是
"_([a-z0-9])"
。Yes. Replace with
\U$1\E
- represented as in Java string"\\U$1\\E"
As long as there is nothing else in your regex, you can dump the
\E
and shorten to\U$1
.Taking @TimPietzcker's comment into account, your regex itself should be
"_([a-z0-9])"
.