2011-02-16 52 views
62

我有一個字符串:將字符串轉換爲列表<string>在一行中?

var names = "Brian,Joe,Chris"; 

有沒有辦法將其轉換爲通過,在一行中界定的List<string>

+14

我不明白「在一條線」的要求。爲了編寫清晰且易於理解的代碼而拍攝,而不是儘可能將空間放入儘可能小的空間。 – 2011-02-16 01:12:30

+5

隨着LINQ的出現,在C#IMO中可讀和清潔的「一行」變得更加常見。 – 2011-02-16 01:15:20

+4

@Ed S. - 儘管我同意「在一行中」可能不是最好的方式,但像Matt Greer提供的單行語句往往是非常清晰和易於理解的。我的猜測是他只是想避免使用`for`循環,這是比較單調乏味,容易出錯和不清楚的。 – StriplingWarrior 2011-02-16 01:18:17

回答

128
List<string> result = names.Split(new char[] { ',' }).ToList(); 

甚至丹的建議清潔:

List<string> result = names.Split(',').ToList(); 
30

List<T>具有接受一個構造函數IEnumerable<T>

List<string> listOfNames = new List<string>(names.Split(','));

1

我喜歡這一點,因爲它可以防止單個項目列表如果您的源字符串爲空,則爲空項目:

IEnumerable<string> namesList = 
     !string.isNullOrEmpty(names) ? names.Split(',') : Enumerable.Empty<string>(); 
0

如果您已經有一個列表並希望從分隔字符串中添加值,可以使用AddRangeInsertRange。例如:

existingList.AddRange(names.Split(','));