You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中能否通过Matcher的正则替换字符串实现字符串转大写?

Java中用Matcher.replaceAll实现全大写转换的替代方案

首先直接明确:Java的正则替换字符串不支持Perl里的\U这种大小写转换标记,这点在Pattern类的文档“与Perl的差异”部分已经说明,所以没法像部分编辑器或Perl那样直接用\U加匹配组的方式实现转换。

如果想通过Matcher.replaceAll()完成把输入字符串(比如Hello world!)转成HELLO WORLD!的需求,有两种实用的替代方法:

1. 函数式替换(推荐,Java 9+)

用Java 9新增的replaceAll(Function<MatchResult, String>)重载方法,直接在lambda里把匹配到的内容转大写:

String input = "Hello world!";
// 这里用".+"匹配整个字符串,如果你要转特定子串,调整正则即可
String result = Pattern.compile(".+")
                       .matcher(input)
                       .replaceAll(match -> match.group().toUpperCase());
// 输出结果:HELLO WORLD!

比如你只想转单词部分,把正则改成\\w+就能只对每个单词做大写转换。

2. 手动拼接结果(Java 8及更早版本)

如果用的是Java 8或更老的版本,就用appendReplacement和appendTail手动处理每个匹配项:

String input = "Hello world!";
Matcher matcher = Pattern.compile(".+").matcher(input);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
    matcher.appendReplacement(sb, matcher.group().toUpperCase());
}
matcher.appendTail(sb);
String result = sb.toString();
// 输出结果:HELLO WORLD!

简单说,Java没有直接对应Perl\U的替换语法,必须通过代码逻辑对匹配结果做大小写转换才能实现需求。

内容的提问来源于stack exchange,提问作者Vamshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:10:20