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

求助:用循环将含多下划线的字符串转为驼峰命名(代码修复)

下划线转驼峰命名(camelCase)的正确循环实现

原代码问题分析

  1. 仅处理第一个下划线:通过indexOf("_",0)只获取了第一个下划线的位置,完全没处理后续的下划线,这是dog_cat_dog只转换出dogCat_dog的核心原因。
  2. 循环逻辑无效:循环遍历每个字符,但仅当i等于第一个下划线索引时才执行转换逻辑,其余时刻重复赋值lowerCase为字符串开头到第一个下划线的片段,没有逐步构建最终结果。
  3. 字符拼接错误:处理下划线后直接拼接substring(index_+2),导致后续的下划线和未转换字符原封不动保留,没有继续处理。

正确的循环实现代码

public String underscoreToCamel(String textToConvert) {
    StringBuilder camelCase = new StringBuilder();
    boolean needUpper = false;

    for (int i = 0; i < textToConvert.length(); i++) {
        char c = textToConvert.charAt(i);
        if (c == '_') {
            needUpper = true;
            continue; // 下划线不加入结果
        }
        if (needUpper) {
            camelCase.append(Character.toUpperCase(c));
            needUpper = false;
        } else {
            camelCase.append(c);
        }
    }
    return camelCase.toString();
}

代码逻辑说明

  • 用StringBuilder做字符串拼接,比直接String相加效率更高,适合处理任意长度的字符串。
  • 用needUpper标记位控制字符转换:
    • 遇到下划线时,标记下一个需要转大写的字符,跳过下划线本身。
    • 遇到非下划线字符时,如果标记位为true,就转成大写加入结果,然后重置标记;否则直接加入原字符。
  • 这种遍历方式会处理字符串中所有下划线,不管数量多少,都能正确输出驼峰格式。

测试示例:输入dog_cat_dog,输出dogCatDog,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:35:34