创建从一个分号分隔的字符串的字典<字符串,字符串>使用LINQ

问题描述:

所以我有一个字符串,如:创建从一个分号分隔的字符串的字典<字符串,字符串>使用LINQ

"some key:some value; john:doe;age:234" 

我已经写了需要这个字符串,并返回一个方法:

Dictionary<string,string> 

很好奇,如果有人可以通过linq做到这一点?

+2

我看不出有任何逗号。 – SLaks

+0

所以它的结肠分开然后。 – codecompleting

假设分隔符不能出现在键或值:

var dict = str.Split(';') 
       .Select(s => s.Split(':')) 
       .ToDictionary(a => a[0].Trim(), a => a[1].Trim())); 

这是不这样做的最快的途径,但它是最简单的。

你也可以使用正则表达式:

static readonly Regex parser = new Regex(@"([^:]):([^;])"); 

var dict = parser.GetMatches(str) 
       .Cast<Match>() 
       .ToDictionary(m => m.Groups[0].Value.Trim(), 
           m => m.Groups[0].Value.Trim() 
       ); 
+0

分割(';',StringSplitOptions.RemoveEmptyEntries),并与第二次拆分相同可能有帮助 – hatchet

+0

@Hatchet:是;这将允许尾随';' – SLaks