【发布时间】:2021-10-24 12:58:28
【问题描述】:
这是我在这里的第一个问题。我正在尝试通过 Code Wars 练习来提高我的基础知识,并且我应该将每个单词的第一个字符更改为大写。
示例:这就是我现在的生活 --> 这就是我现在的生活
这是我目前的代码,但大写字母似乎无法正常工作。为什么?
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;
}
谢谢大家!从您的回答中,我能够创建一种工作方法。很高兴加入这样的社区。p>
我的最终代码使用了一个列表来完成这项工作,虽然不是很漂亮,但它通过了。
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);
}
【问题讨论】:
-
你对这个问题有什么限制吗?
-
char.ToUpper返回一个char- 它不会进行就地更新 -
转换为大写,当您刚刚检查它是一个空格时,似乎没有意义。但是您确实需要将下一个字符大写
-
我在检查空后将 1 添加到 i 以更改下一个字符。但是如果它只是返回值而不是替换它,这应该是像phrase[i] = char.ToUpper(phrase[i]); ?对此没有任何限制。
-
要就地处理,您需要将输出转换为变量,然后从方法中返回该变量。
标签: c# visual-studio toupper