2015-12-11 112 views
0

我想反转示例中给出的字符串。Linq反向字符串c#

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

大多数关于如何扭转提到的职位,而不使用内置的反向()。

我需要的结果只使用反向内置函数使用linq。 我能够使它如上面的代码片段所示,但不能达到最后。

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

+0

@VijayKumbhoje,Ammu明确表示,他不感兴趣的问题,因为它没有内置的反转功能,而他想使用内置功能。 –

回答

5

改变这一行:

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的数组,这是我对代码的调整。

+0

解释为什么这个作品比他更好会在这里很有帮助 –

+0

它的工作原理。我错过了*新的字符串*。 var resultstring = actor.Reverse()。Select(c => new string(c.Reverse()。ToArray()))。ToArray();和var resultstring = actor.Reverse()。Select(c => new string(c.Reverse()。ToArray()));对于这两种情况我都能够获取for循环中的记录。 –

+0

@Ammu你可以安全地将最后一次调用放到'ToArray'。我只是把它放在了你的身上。 – test

1

为了实现这个目标我已经打破了它分解成:

  1. 枚举每一个细胞。
  2. 反转当前字符串
  3. 将其转换为char数组。
  4. 和超负荷string constructor其中接受char array
  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); 
} 
+0

您的代码输出与他的示例输出不匹配,因为在他的示例中,他颠倒了名称并颠倒了它们出来的顺序,而您的代码只颠倒了每个名称而不是顺序。我不知道他是否真的关心订单的逆转,但是值得找出 –

+0

OP还需要颠倒字符串的顺序以及字符串中字符的顺序。 – test

+2

@KevinWells,错过了谢谢。测试,谢谢。 –

0

如果输出所需的唯一的事情,这就够了

Console.WriteLine(string.Join(",", actor).Reverse().ToArray());