0

語句を大文字と小文字の連続 (交互) に変換する必要があります。

例。

入力:
the girl is pretty.

出力:
tHe GiRl Is PrEtTy

以下のコードを試しましたが、最初の文字のみを変換します。

char[] array = texto.ToCharArray();
if (array.Length >= 1)
{
    if (char.IsLower(array[0]))
    {
        array[0] = char.ToUpper(array[0]);
    }
}
for (int i = 1; i < array.Length; i++)
{
    if (array[i - 1] == ' ')
    {
        if (char.IsLower(array[i]))
        {
            array[i] = char.ToUpper(array[i]);
        }
    }
}
return new string(array);

ありがとう

4

2 に答える 2

4

LINQ を使用したファンシー ソリューション:

string someString = "the girl is pretty";
string newString = string.Concat(
    someString.ToLower().AsEnumerable().Select((c, i) => i % 2 == 0 ? c : char.ToUpper(c)));

これは基本的に次のことを行います。

  1. 文字列を小文字に変換します。
  2. 各文字を繰り返します。
  3. 1 文字おきに大文字に変換します。
  4. 文字を 1 つの文字列に結合します。

より「古典的な」ソリューションは次のようになります。

string someString = "the girl is pretty";

StringBuilder sb = new StringBuilder();
bool uppercase = false;
foreach (char c in someString)
{
    if (uppercase)
        sb.Append(char.ToUpper(c));
    else
        sb.Append(char.ToLower(c));

    uppercase = !uppercase;
}

string newString = sb.ToString();
于 2016-03-28T00:30:19.357 に答える