2015-12-11 161 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());