如何使用LINQ在C#中反转字符串?

时间:2013-06-08 07:10:40

标签: c# string linq reverse

我正在阅读编码恐怖片的旧帖子(http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html)这仍然是一个非常有趣的阅读,你会注意到很多提供答案的人实际上自己犯了很小的逻辑错误(大约30%)

无论如何,我想我会给自己设置一个小挑战,并在这里找到一堆fizzbuzz问题:Alternate FizzBuzz Questions

“Reverse a String” - 使用.net框架中的所有内置方法,有很多方法可以做到这一点。

我的问题是: 1. 如何使用LINQ反转字符串? 2.你能想出其他有趣的方法来反转C#中的字符串吗?

以下是我提出的两个例子 1.完全从头开始 2.使用可枚举的反向方法(1个班轮)

    private static string FromScratchSimplified(string input)
    {
        // constructed reversed char array
        char[] reversedCharArray = new char[input.Length];
        for (int i = 0; i < input.Length; i++)
        {
            reversedCharArray[i] = input[input.Length-1-i];
        }

        // build string from char array
        string reversedString = new String(reversedCharArray);

        return reversedString;
    }


    private static string UsingEnumerableReverseMethod(string input)
    {
        // using Enumerable.Reverse method
        return new String(input.Reverse().ToArray());
    }

还有吗?

2 个答案:

答案 0 :(得分:0)

new string(Enumerable.Range(1, input.Length).Select(i => input[input.Length - i]).ToArray())

答案 1 :(得分:0)

使其尽可能接近查询语法:

下式给出:

        string aString = "please reverse me";

然后:

        var reversed = new string((from c in aString.Select((value, index) => new { value, index })
                            orderby c.index descending
                            select c.value).ToArray());

        Console.WriteLine(reversed);

的产率:

em esrever esaelp