大文字の場合にテキストにスペースを追加する文字列ビルダーを作成しました。入力する文は、「ThisIsASentence.」のようになります。大文字で始まるため、文字列ビルダーは文を次のように変更します: "This Is A Sentence."
私の問題は、「thisIsASentence」のような文があった場合です。文字列ビルダーは通常のように文を区切ります: "これは文です."
どちらも最初の文字の前にスペースがあります。
文がこの行を通過すると:
result = result.Substring(1, 1).ToUpper() + result.Substring(2).ToLower();
入力された最初の文字が小文字の場合、それが切り捨てられ、2 番目の文字が大文字になります。
この行は、入力された最初の文字を大文字にし、残りを小文字に設定することを意図していました。
その行を実行する前にトリムステートメントを追加しても、出力は何も変わりません。
ここに私の全体的なコードがあります:
private void btnChange_Click(object sender, EventArgs e)
{
// New string named sentence, assigning the text input to sentence.
string sentence;
sentence = txtSentence.Text;
// String builder to let us modify string
StringBuilder sentenceSB = new StringBuilder();
/*
* For every character in the string "sentence" if the character is uppercase,
* add a space before the letter,
* if it isn't, add nothing.
*/
foreach (char c in sentence)
{
if (char.IsUpper(c))
{
sentenceSB.Append(" ");
}
sentenceSB.Append(c);
}
// Store the edited sentence into the "result" string
string result = sentenceSB.ToString();
// Starting at the 2nd spot and going 1, makes the first character capitalized
// Starting at position 3 and going to end change them to lower case.
result = result.Substring(1, 1).ToUpper() + result.Substring(2).ToLower();
// set the label text to equal "result" and set it visible.
lblChanged.Text = result.ToString();
lblChanged.Visible = true;