LowerCase和UpperCase交替c#

时间:2016-03-28 00:20:30

标签: c# uppercase lowercase alternating

我需要将大写和小写的短语单词连续(交替)转换。

实施例

输入:
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);

由于

2 个答案:

答案 0 :(得分:3)

使用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. 将每秒字符转换为大写字母。
  4. 将字符加入单个字符串。
  5. 更“经典”的解决方案可能如下所示:

    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();
    

答案 1 :(得分:0)

poke的答案是正确的,但它包括交替案例的空格。我做了一些调整到上一个答案,它忽略了字符串的空格。

string someString = "the girl is pretty";
string space = " ";

char[] str = someString.ToCharArray();
char[] str2 = space.ToCharArray();

bool uppercase = false;

StringBuilder sb = new StringBuilder();

foreach (char c in str)
{
    if (c != str2[0])
    {
        if (uppercase)
            sb.Append(char.ToUpper(c));
        else
        {
            sb.Append(char.ToLower(c));
        }
        uppercase = !uppercase;
    }
    else
    {
        sb.Append(c);
    }   
}

string newString = sb.ToString();