2011-05-26 66 views
1

我有一個以下模式的字符串列表:「name \ middleName」。 什麼是最好的方式變成一個列表,其中所有的元素只是「名稱」? (即分割字符串,只留下了「名」的一部分)操縱列表中的元素-c#

感謝, 李

回答

5
List<string> originalList = ... 
List<string> newList = originalList.Select(s => s.Split('\\')[0]).ToList() 
+1

您可能是指'[0]'來獲取'name'部分。 – 2011-05-26 16:22:32

+0

實際上應該是元素[0],但+1是一個很好的解決方案。編輯:艾哈邁德擊敗了我。 :) – Rohrbs 2011-05-26 16:23:06

+0

噢,因爲某種原因,我想這個名字是在'\\'之後的。現在修復 – 2011-05-26 16:24:21

0
//your list of strings in format (name\middleName) 
List<string> list; 
List<string> newList; 

foreach(string item in list) 
    newList.Add(item.Substring(0, item.IndexOf("\\"))); 

這將使你的字符串列表的副本到一個新的格式像你想。

+0

不認爲你可以像這樣改變foreach中的項目。 – Eric 2011-05-26 16:23:12

+0

@Eric我在發佈之前已將其更改爲添加到新列表中。 – Chad 2011-05-26 16:24:10

+0

事情發生很快,出現新的問題:) – Eric 2011-05-26 16:29:24

0

Tokenize「/」並將第一個字符串分配給名稱變量。 或者只是將所有這些字符串循環到列表中,並且在循環內對字符串長度進行循環,將字符串變爲變量並在到達「/」時退出並將其存儲爲名稱。

4
List<string> original = ... 
List<string> nameOnly = original.ConvertAll(s => s.Substring(0, s.IndexOf('\\'))); 

如果有可能,有可能無法在原始列表的一些元素\字符,那麼你就需要一個額外的檢查,以避免例外:

List<string> nameOnly = original.ConvertAll(s => { 
                int i = s.IndexOf('\\'); 
                return (i == -1) 
                 ? s 
                 : s.Substring(0, i); 
               }); 
0

下面是正則表達式的解決方案你沒有創建一個新的列表。

for(int i = 0; i < list.count; i++) 
{ 
    list[i] = Regex.Match(List[i],@"^\w+").value  
}