2013-08-28 89 views
2

我使用String.replaceAll(String, String)替换某些正则表达式。类似的东西:用其上部变体替换正则表达式捕获

"test Test tEsT wOrd".replaceAll("(?i)(\\w+)", "$1") 

我需要它的上部变种替换此捕获,请问有什么办法做到这一点还是我需要使用java.util.regex.Matcher

+0

所以你只是想捕获大写字母? – progrenhard

+4

Java没有'replaceAll'的回调变体。 [这是Java的方式](http://stackoverflow.com/a/377484/1633117)。 –

+0

@phardhard,表达可能更复杂,通常我不需要使_all_字母大写,只是其中一些匹配正则表达式。 –

回答

-1

看看这个字符串方法: toUpperCase

我的建议(未测试)是做这样的事情:

"test Test tEsT wOrd".replaceAll("[magic regex]", "$1".toUpperCase()) 

@大卫Knipe是​​正确的(评论) 。我能想到的唯一的其他事情是沿着First char to upper case的方向行事,但在这种情况下可能会非常快速地变得非常混乱。如果你找到另一种方式,它可能会更好,但在这里只是为了防止没有其他选择。

+0

'“$ 1”.toUpperCase()'将计算为字符串“$ 1”,与“$ 1”'完全相同。 –