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

如何将字符串中每组连续相同字母的首字母大写?

实现连续相同字符首字母大写的处理方案

给定字符串:

String s = "abbcccdddd";

需求是将每组连续相同字母的首字母转为大写,其余字母保持原小写,最终得到结果:ABbCccDddd。

以下是两种可行的实现方式:

方法一:遍历字符串逐个处理

通过遍历字符串的每个字符,对比当前字符与前一个字符是否相同,不同则将当前字符转为大写,否则保留原字符。这种方式逻辑直观,性能稳定。

public class Main {
    public static void main(String[] args) {
        String s = "abbcccdddd";
        if (s.isEmpty()) {
            System.out.println("");
            return;
        }
        StringBuilder result = new StringBuilder();
        // 第一个字符直接转大写
        result.append(Character.toUpperCase(s.charAt(0)));
        for (int i = 1; i < s.length(); i++) {
            char current = s.charAt(i);
            char prev = s.charAt(i - 1);
            if (current != prev) {
                result.append(Character.toUpperCase(current));
            } else {
                result.append(current);
            }
        }
        System.out.println(result.toString()); // 输出 ABbCccDddd
    }
}

方法二:正则表达式匹配替换

利用正则表达式匹配连续重复的字符组,对每个匹配组的首字符进行大写转换,其余字符保留原样。这种方式代码更简洁,适合偏好正则处理字符串的场景。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String s = "abbcccdddd";
        // 匹配连续重复的字符组:(.)捕获第一个字符,\1*匹配后续相同的字符
        Pattern pattern = Pattern.compile("(.)\\1*");
        Matcher matcher = pattern.matcher(s);
        StringBuilder result = new StringBuilder();
        while (matcher.find()) {
            String group = matcher.group();
            // 首字符大写拼接后续字符
            result.append(Character.toUpperCase(group.charAt(0)))
                  .append(group.substring(1));
        }
        System.out.println(result.toString()); // 输出 ABbCccDddd
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:11:11