c# - 您可以使用 LINQ 或 LAMBDA 表达式对一行中的字符串进行反向排序吗

标签 c# linq string lambda

并不是说我想实际使用它(出于多种原因),但出于严格的好奇心,我想知道是否有一种方法可以在 一行中使用 LINQ 和/或 LAMBDA 表达式来反转字符串的顺序代码,不使用任何框架“反向”方法。

例如

string value = "reverse me";
string reversedValue = (....);

并且 reversedValue 将导致“em esrever”

编辑 显然这是一个不切实际的问题/解决方案,我知道这一点,所以不要担心这完全是一个围绕 LINQ/LAMBDA 构造的好奇心问题。

最佳答案

好吧,即使不使用 LINQ 或 lambda,我也可以在很长的一行中完成:

string original = "reverse me"; char[] chars = original.ToCharArray(); char[] reversed = new char[chars.Length]; for (int i=0; i < chars.Length; i++) reversed[chars.Length-i-1] = chars[i]; string reversedValue = new string(reversed);

(亲爱的潜在编辑:不要将它展开到多行。重点是它是单行,根据上面的句子和问题。)

但是,如果我看到有人为此避免使用框架方法,我会质疑他们的理智。

请注意,这根本不使用 LINQ。 LINQ 的答案是:

string reverseValue = new string(original.Reverse().ToArray());

避免使用 Reverse,而是使用 OrderByDescending:

string reverseValue = new string(original.Select((c, index) => new { c, index })
                                         .OrderByDescending(x => x.index)
                                         .Select(x => x.c)
                                         .ToArray());

布莱克。不过,我喜欢 Mehrdad 的回答。当然,所有这些都远不如直接的方法有效。

哦,他们也都错了。反转字符串比反转代码点的顺序更复杂。考虑组合字符、代理对等...

关于c# - 您可以使用 LINQ 或 LAMBDA 表达式对一行中的字符串进行反向排序吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1152887/

相关文章:

linq - linq选择一个随机行

Python有没有办法计算字符串插入字符串的数量?

python - 如何使用正则表达式提取文本 block 而不将文本 block 分成几行

c# - 在 C# 中访问 "Measurement System"单位名称(kg/lb、m/in 等)

linq - 如何在 OS X 上的 MonoDevelop 2.0 中使用 Linq?

c# - 使用 LINQ,您将如何从列表中过滤掉特定条件中除一项以外的所有项?

ios - Swift 与核心数据

c# - 如何安全地将静态类转换为 C# 中的实例化类

c# - 使用 C#/Moq 框架模拟带有输入参数的异步 DbContext 函数

c# - 正则表达式提取链接