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

C#实现Jaden Casing Strings时首字母大写功能失效问题咨询

C# Jaden Casing Strings 实现问题排查

我正在通过Code Wars练习巩固C#基础,当前处理Jaden Casing Strings题目,需求为将输入字符串中每个单词的首字母转换为大写,示例效果:This is my life now --> This Is My Life Now。

初始代码问题分析

初始编写的代码无法正常实现大写转换,代码如下:

public static string ToJadenCase(string phrase)
{
    for (int i = 0; i < phrase.Length; i++)
    {
        char _first = phrase[0];
        if (phrase[i] == ' ')
        {
            i++;
            char.ToUpper(phrase[i]);
        }
        else if(phrase[i] == _first)
        {
            char.ToUpper(phrase[i]);
        }
    }
    return phrase;
}

错误原因

  • C#中string是不可变类型,调用char.ToUpper()仅会返回转换后的新字符,不会修改原字符串对应位置的字符,初始代码中没有存储转换后的字符,也没有生成新的字符串对象,因此原字符串不会发生任何变化。
  • 首字符判断逻辑错误:通过phrase[i] == _first判断是否为字符串首字符,若后续单词中存在和首字符相同的字符会被误触发转换逻辑,且即使触发逻辑也未正确保存转换结果。
  • 缺少边界校验:如果输入字符串末尾为空格,执行i++后访问phrase[i]会触发索引越界异常。

最终可用实现

参考调整后可正常运行的代码如下:

public static string ToJadenCase(string phrase)
{
    List<char> _textlist = new List<char>();
    _textlist.Add(char.ToUpper(phrase[0]));

    for (int i = 1; i < phrase.Length; i++)
    {                  
        if (phrase[i] == ' ')
        {
            _textlist.Add(phrase[i]);                        
            _textlist.Add(char.ToUpper(phrase[i + 1]));
            i++;
        }
        else
        {
            _textlist.Add(phrase[i]);
        }                  
    }
    return string.Join("",_textlist);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:15:03