C#中的Linq反转字符串

3

我想按照示例反转一个字符串。

 string[] actor = new string[] { "amitabh", "abhishek", "jitendra", "Salman", "Aishwariya" };

 var  resultstring= actor.Reverse().Select(c => c.Reverse()).ToArray();

    foreach(var m in resultstring)
    {
     //how to fetch this?
    }

输出应该是

ayirawhsia,namlas,ardnetij,kehsihba,hbatima

大多数文章都提到了如何在不使用内置reverse()函数的情况下进行反转。

我需要仅使用Linq内置的reverse函数得到结果。 我能够像上面片段中所示地完成它,但无法达到最终目标。

有人可以帮我解决这个问题吗?


@VijayKumbhoje,Ammu明确表示他对那个问题不感兴趣,因为它没有使用内置的反转函数,而他想要使用内置函数。 - Kevin
3个回答

8

更改此行:

var resultstring = actor.Reverse().Select(c => c.Reverse()).ToArray();

到这个:

var resultstring = actor.Reverse().Select(c => new string(c.Reverse().ToArray())).ToArray();

需要注意的是,当你在字符串上调用Reverse方法时,它实际上返回了一个IEnumerable<char>类型的结果,而不是你可能期望的string类型。但是没关系,string构造函数接受一个char数组作为参数,这也是我对你的代码进行调整的原因。


在这里解释为什么这比他的方法更好将非常有帮助。 - Kevin
它有效。我错过了 new string。在以下两种情况下,变量resultstring的区别是什么? var resultstring = actor.Reverse().Select(c => new string(c.Reverse().ToArray())).ToArray(); 和 var resultstring = actor.Reverse().Select(c => new string(c.Reverse().ToArray())); 对于这两种情况,我都能在for循环中获取记录。 - Tom Cruise
@Ammu 你可以安全地省略最后一次调用 ToArray。我只是因为你这样做了才加上它。 - test

2
如果只需要输出结果,那么这就足够了。
Console.WriteLine(string.Join(",", actor).Reverse().ToArray());

1
为了实现这个目标,我将其分解为以下步骤:
  1. 枚举每个单元格。
  2. 反转当前字符串。
  3. 将其转换为字符数组。
  4. 使用重载的string构造函数接受char数组
  5. 迭代并打印每个字符串。

代码:

var actor = new[] { "amitabh", "abhishek", "jitendra", "Salman", "Aishwariya" };

var resultstring = actor.Reverse().Select(c => new string(c.Reverse().ToArray()));
foreach (var m in resultstring)
{
    Console.WriteLine(m);
}

你的代码输出与他的样例输出不匹配,因为在他的样例中,他反转了名字并反转了它们出现的顺序,而你只是反转了每个名字而不是顺序。我不知道他是否真的关心顺序的反转,但找出来值得一试。 - Kevin
OP 还需要将字符串的顺序以及字符串中字符的顺序进行反转。 - test

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接