2014-03-03 99 views
-1

我有這樣的字符串:如何從使用LINQ的逗號分隔字符串中提取單詞?

string features="name1,name2,name3,name4,name5,name6,name7"; 

現在我想提取的所有名稱和存儲使用LINQ在一個字符串數組的結果。這可能嗎?

如果不是那麼請告訴我這樣做的最簡單的方法。

我已經這樣做了,但是想用LINQ來做。

string Allfeat = txtFeatures.Text; 
string sep = ","; 
string[] feat = Allfeat.Split(sep.ToCharArray()); 
+2

方式這樣做已經是最好的方式。 –

+1

你不需要LINQ,'Allfeat.Split(',')'會給你所需的數組。 – Habib

+0

[如何分割字符串(C#編程指南)](http://msdn.microsoft.com/zh-cn/library/ms228388.aspx) –

回答

2

這是最簡單的:

string[] feat = Allfeat.Split(','); 

LINQ是真棒,對於大多數cases.But你不必使用LINQ所有time.In這種情況下非常有用的有幾個重載版本Split method.One他們需要params char[]作爲參數,所以你可以很容易地通過zeromore分隔符。如果你想簡化它,你也可以直接使用txtFeatures.Text變量。

string[] feat = txtFeatures.Text.Split(',') 
1

你可以推出自己的Linq中,像這樣:

public static IEnumerable<string> CsvSplit(this IEnumerable<char> text , char delimiter = ',') 
{ 
    StringBuilder sb = new StringBuilder() ; 
    foreach (char c in text) 
    { 
    if (c == delimiter) 
    { 
     yield return sb.ToString() ; 
     sb.Length = 0 ; 
    } 
    else 
    { 
     sb.Append(c) ; 
    } 
    } 
    if (sb.Length > 0) 
    { 
    yield return sb.ToString() ; 
    } 
} 

或者你可以使用正則表達式的東西沿着這些線路:

private static Regex rxWord = new Regex(@"[^,]*") ; 
public static IEnumerable<string> CsvSplit(this string text) 
{ 
    for (Match m = rxWord.Match(text) ; m.Success ; m = m.NextMatch()) 
    { 
    yield return m.Value ; 
    } 
} 

但是,什麼是錯string.Split()?雖然,解析什麼,但一個簡單的CSV文本不是那麼簡單,因爲它似乎:d —你可能想看看使用塞巴斯蒂安Lorion最優秀的Fast CSV Reader:你是

相關問題