2015-06-18 165 views
0

我有一個像下面的字符串數組,其中包含字符串後跟分隔符(:)和一個數字。從另一個分隔字符串數組獲取字符串數組

"string:1" 
"string:1" 
"string:2" 
"string:3" 
"string:5" 
"string:777" 
... 

我想字符串數組,從最後一個分隔符得到編號(:)

"1" 
"1" 
"2" 
"3" 
"5" 
"777" 

我想知道如果我能做到這一點的一個班輪LINQ VS不得不做拆分每個字符串數組,並通過遍歷父字符串數組來重建新的數組。

+0

你的字符串始終是'字符串:XXX'模式?他們還有什麼其他的模式? –

+0

不,他們不是字符串:XXX模式 –

+0

@gabriel已經有'LastIndexOf' ...通常'Split'提供更好的*看起來*更短的代碼,這通常是這些代碼高爾夫球問題的目標。 –

回答

2

您可以使用Enumerable.Select隨着String.Split

string []arr = {"string:1", "string:1", "string:2"}; 
string [] result = arr.Select(e=>e.Split(':').Last()).ToArray(); 

將其轉換爲int數組,你可以使用Convert.ToInt32

int []result1 = arr.Select(e=>Convert.ToInt32(e.Split(':')[1].Last())).ToArray(); 
+0

「最後一個分隔符」可能意味着字符串中有多個':'......'Enumerable.Last'可能是更好的選擇 –

+0

我很感謝你們倆...... – Adil

0

您可以刪除string:部分與Select等;

var list = new List<string>() 
{ 
    "string:1", 
    "string:1", 
    "string:2", 
    "string:3", 
    "string:5" 
}; 

var result = list.Select(s => s.Replace("string:", "")).ToArray(); 

enter image description here

0
List<string> s = new List<string>(); 
s.Add("string:1"); 
s.Add("string:2"); 
s.Add("string:4"); 
s.Add("string:5"); 
s.ForEach(delegate(String str) 
{ 
    Console.WriteLine(str.Substring(str.LastIndexOf(":"))); 
}); 
相關問題