這是我在這里的第一個問題。我正在嘗試通過進行 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;
}
謝謝你們!根據您的回答,我能夠創建一種作業方法。很高興加入這樣的社區。
我的最終代碼使用一個串列來完成這項作業,它并不漂亮,但它通過了。
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);
}
uj5u.com熱心網友回復:
有多種方法,但您的代碼傾向于陣列操作。我們可以StringBuilder用來幫助進行簡單的基于陣列的替換:
這在此處描述C#按索引替換或洗掉字符
public static string ToJadenCase(string phrase)
{
// record the output as we process the input
var output = new System.Text.StringBuilder(phrase);
char _first = phrase[0];
for (int i = 0; i < phrase.Length; i )
{
if (phrase[i] == ' ')
{
i ;
output[i] = char.ToUpper(phrase[i]);
}
else if(phrase[i] == _first)
{
output[i] = char.ToUpper(phrase[i]);
}
}
return output.ToString();
}
注意:我只是在這里轉換了你的邏輯,我不保證你會通過這個測驗用例,你應該檢查邊界條件,比如傳入 for 的空字串或空字串
phrase,或者以空格開頭的字串...我也不確定與第一個字符的比較是為了什么,所以我不會對此發表評論,作為Code Wars或Hackerrank問題,我相信你的話,它是要求的一部分。
uj5u.com熱心網友回復:
如果沒有特定的特權,那么這應該可以解決問題:
public static void Main()
{
var c = "to jaden case";
var str = c.Split(' ')
.Select(x => x.Length > 1 ? Char.ToUpper(x[0]) x[1..] : x.ToUpper());
var result = string.Join(' ', str);
Console.WriteLine(result);
}
如果需要,您還可以在字串拆分后,將所有部分轉換為小寫,如果可以將小寫/大寫的字串放在不同的位置。加入多個空格時還有一個關于額外空格字符的事情,但為此我把它省略了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/335361.html
