【问题标题】:LowerCase and UpperCase Alternating c#小写和大写交替 c#
【发布时间】:2016-07-15 05:34:49
【问题描述】:

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

示例。

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

谢谢

【问题讨论】:

  • 我试试,char[] array = texto.ToCharArray(); if (array.Length >= 1) { if (char.IsLower(array[0])) { array[0] = char.ToUpper(array[0]); } } for (int i = 1; i
  • 但只转换第一个字母

标签: c# uppercase lowercase alternating


【解决方案1】:

使用 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. 将字符连接成一个字符串。

更“经典”的解决方案可能如下所示:

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

【讨论】:

  • 喜欢 lambda/modulus 解决方案!真漂亮!
  • @poke 你可以使用String.Concat 而不是String.Join
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多