2011-02-13 33 views
12

我是C#的新手,因此正在尋找外行人對此的條款。從本質上講,我希望做的是轉:C#拆分,返回一個數組中的鍵/值對

鍵1 = VAL1 |鍵2 =值2 | ... | keyN = VALN

到哪裏,你猜對了一個數據庫陣列,KEY1返回val1,KEY2回報val2等。我知道我可以使用分割返回一個字符串,但從那一刻起,我就處於虧損狀態。任何幫助將不勝感激!我希望我已經明確了我的意圖,但如果您有任何問題,請不要猶豫,問問!

+1

@Mark Byers:我假設他的意思是「關聯數組」,就像字典一樣。 – jason 2011-02-13 02:53:46

回答

50
string s = "key1=val1|key2=val2|keyN=valN"; 
var dict = s.Split('|') 
      .Select(x => x.Split('=')) 
      .ToDictionary(x => x[0], x => x[1]); 

現在dictDictionary<string, string>與所需的鍵/值對。

+1

這幫助我非常。正如我所說的,我是C#的新手,並將我的第一個程序作爲附加組件(或多或少)用於我已經使用的程序。謝謝! – Josh 2011-02-13 05:15:15

8
Dictionary<string,string> results = new Dictionary<string,string>(); 
foreach(string kvp in source.split('|')) 
{ 
    results.Add(kvp.split('=')[0], kvp.split('=')[1]); 
} 

可能是Linq的一種做法。

3
string s = "key1=val1|key2=val2|keyN=valN"; 
var dict = s.Split('|') 
.Select(x => x.Split('=')) 
.Where(x => x.Length > 1 && !String.IsNullOrEmpty(x[0].Trim()) 
    && !String.IsNullOrEmpty(x[1].Trim())) 
.ToDictionary(x => x[0].Trim(), x => x[1].Trim()); 
相關問題