如何在字符串中交替使用案例?

时间:2014-07-06 12:26:59

标签: c# case-sensitive

我需要在一个句子中交替使用这个案例而且我不知道该怎么做。 例如:

thequickbrownfoxjumpsoverthelazydog

GoDyZaLeHtReVoSpMuJxOfNwOrBkCiUqEhT

到目前为止这是我的代码

Console.WriteLine("Please enter a sentence:");
        string text = Console.ReadLine();
        text = text.Replace(" ", "");
        char[] reversed = text.ToCharArray();//String to char
        Array.Reverse(reversed);//Reverses char
        new string(reversed);//Char to string

        Console.WriteLine(reversed);
        Console.ReadLine();

请注意,由于某种原因没有空格,因为这也是家庭作业的一部分。

4 个答案:

答案 0 :(得分:2)

字符串是不可变的,因此,您需要将其转换为char []。

char[] characters = text.ToCharArray();
for (int i = 0; i < characters.Length; i+=2) {
    characters[i] = char.ToUpper(characters[i]);
}
text = new string(characters);

答案 1 :(得分:1)

没有必要扭转你的字符串。只是大写你的字符串中的偶数索引字符。

请记住,我的文化是tr-TR,这种String.ToUpper方法的工作取决于您当前的线索文化。在此示例中,您的输出可能与我的输出不同。

这是LINQPad;

中的示例
string s = "thequickbrownfoxjumpsoverthelazydog";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.Length; i++)
{
    if (i % 2 == 0)
    {
        sb.Append(s[i].ToString().ToUpper());
    }
    else
    {
        sb.Append(s[i].ToString());
    }
}
sb.ToString().Dump();

输出将是;

ThEqUiCkBrOwNfOxJuMpSoVeRtHeLaZyDoG

答案 2 :(得分:0)

LINQ的另一个可能解决方案可以在一行中完成:

string s = "thequickbrownfoxjumpsoverthelazydog";
string result = new String(s
                            // take each character
                            .ToCharArray()
                            // convert every character at even index to upper
                            .Select ((character, index) => (index % 2) == 0 ? Char.ToUpper(character) : character)
                            // back to array in order to create a string
                            .ToArray());
Console.WriteLine(result);

输出结果为:

ThEqUiCkBrOwNfOxJuMpSoVeRtHeLaZyDoG

此解决方案使用indexed LINQ Select clause来访问当前索引和当前投影的值。

答案 3 :(得分:0)

一个班轮:

new string(myString.Select((c, i) => i % 2 == 0 ? char.ToUpper(c) : c).ToArray())

扩展方法:

 public static string AltCase(this string s)
 {
     return new string(s.Select((c, i) => i % 2 == 0 ? char.ToUpper(c) : c).ToArray());
 }