Java String replaceAll方法如何将分组字符转换为大写?

只使用replaceAll()方法,如何把获取的到分组字符$1转换为大写字母。
目前的代码无法实现将“将字符串转换为驼峰式大小写”

import java.lang.*;
public class HelloWorld {
    public static void main(String []args) {
       System.out.println("the-stealth-warrior".replaceAll("[_-](\\w)","$1".toUpperCase()));
    }
}

期待:theStealthWarrior 但实际为thestealthwarrior,问题出在哪里呢?

阅读 3.8k
1 个回答
java.util.regex.Matcher m = java.util.regex.Pattern.compile("[_-](\\w)").matcher("the-stealth-warrior");
StringBuffer sb = new StringBuffer();
while (m.find()) {
    m.appendReplacement(sb, m.group(1).toUpperCase());
}
m.appendTail(sb);
System.out.println(sb.toString());

补充一句,问题就在于 "$1".toUpperCase() 只是把字符串 $1 变成大写而已,显然 $1 变大写还是 $1。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进