【问题标题】:how do you reverse a string in C# using LINQ? [closed]如何使用 LINQ 在 C# 中反转字符串? [关闭]
【发布时间】:2013-06-08 07:10:39
【问题描述】:

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

无论如何,我以为我会给自己一个小挑战,并在这里发现了一堆 fizzbuzz 问题:Alternate FizzBuzz Questions

“反转字符串” - 使用 .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());
    }

还有吗?

【问题讨论】:

  • 这可能更适合 codegolf.stackexchange.com
  • 我喜欢这个问题,但它不适用于 StackOverflow。 -1.
  • 我不一定同意这篇文章被否决这么多。我认为他只是对如何使用 LINQ 反转字符串感兴趣。 @James Z,请考虑编辑帖子,让它听起来更像是一个问题而不是挑战。
  • 当我想反转一个字符串时,我将它发送到一个受证书保护的 Web 服务,然后对结果进行地理复制....
  • 这似乎是一个非常严酷的社区。在这里发帖几分钟内投了 4 票,这就像我第二次在这里发帖。

标签: c# string linq reverse


【解决方案1】:
new string(Enumerable.Range(1, input.Length).Select(i => input[input.Length - i]).ToArray())

【讨论】:

    【解决方案2】:

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

    给定:

            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
    

    【讨论】:

    • 这实际上是我正在寻找的答案,即带有查询语法。会尝试一下,如果它有效并且没有更多帖子,我会接受你的回答
    猜你喜欢
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 2023-01-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    相关资源
    最近更新 更多