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

Java如何按大写字母拆分驼峰字符串并在末尾保留原字符串

问题解决

问题原因

  • 你当前使用的正则([A-Z])(?![A-Z])逻辑错误:仅会匹配后缀不是大写字母的大写字母,并在其前加空格,无法识别连续大写字母的拆分场景,比如原字符串中的BB、TT连续大写段就会拆分失败,出现ByT这类不符合预期的结果。
  • 代码中多余的distinct操作会误删拆分后重复的合法单词,如果你没有去重需求可以直接去掉。
  • 如果你当前方法没有读写文件逻辑,不需要声明抛出FileNotFoundException、IOException异常。

修改后的实现代码

public String breakWord(String fileAsString) {
    StringBuilder allMethod = new StringBuilder();
    // 按空格拆分原输入的多个单词
    String[] splitString = fileAsString.split(" ");
    for (String s : splitString) {
        // 所有非开头位置的大写字母前加空格,trim去掉开头多余空格
        String splitRes = s.replaceAll("(?<=.)(?=[A-Z])", " ").trim();
        // 拼接拆分结果 + 原完整单词
        String currentRes = splitRes + " " + s;
        // 追加到总结果,不同单词的处理结果用空格分隔
        if (allMethod.length() > 0) {
            allMethod.append(" ");
        }
        allMethod.append(currentRes);
    }
    return allMethod.toString();
}

测试验证

输入值为BByTTheWay时,运行后输出结果为:B By T The Way BByTTheWay,和预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:36:03