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

如何在Java中移除短横线并将其后字母转为大写:处理"the-stealth-warrior"

正确实现短横线转驼峰命名的Java方法

原代码的问题

你的代码存在几个关键问题导致无法实现需求:

  • 没有用可变字符串容器(比如StringBuilder)存储处理后的结果,所有操作都在临时char变量上进行,最终没有保留任何输出。
  • 遇到'-'时逻辑错误:已经将下一个字符转成大写,但后续的newName += name.charAt(i + 1)会把char类型转为int做加法,完全偏离预期。
  • 未处理非'-'的普通字符,这些字符没有被加入结果中。

方法一:手动遍历实现(高效可控)

public class Main {
    public static void main(String[] args) {
        String name = "the-stealth-warrior";
        StringBuilder result = new StringBuilder();
        boolean capitalizeNext = false;
        
        for (char c : name.toCharArray()) {
            if (c == '-') {
                capitalizeNext = true;
            } else {
                result.append(capitalizeNext ? Character.toUpperCase(c) : c);
                capitalizeNext = false;
            }
        }
        
        System.out.println(result.toString()); // 输出:theStealthWarrior
    }
}

这个实现的核心逻辑:

  • 用StringBuilder高效拼接字符串,避免频繁创建String对象带来的性能损耗。
  • 用capitalizeNext标记下一个字符是否需要大写,遇到'-'时设置标记并跳过该符号。
  • 遍历每个字符,根据标记决定是否转大写,处理完成后重置标记。

方法二:正则表达式实现(简洁)

如果追求代码简洁,可以用正则表达式快速实现:

public class Main {
    public static void main(String[] args) {
        String name = "the-stealth-warrior";
        String result = name.replaceAll("-(.)", match -> match.group(1).toUpperCase());
        System.out.println(result); // 输出:theStealthWarrior
    }
}

逻辑说明:

  • 正则-(.)匹配短横线及其后的一个字符,(.)是捕获组,用来提取短横线后的字母。
  • 通过lambda表达式将捕获到的字母转成大写,替换掉匹配的-x部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:57:25