所以我有一个字符串:
"some key:some value; john:doe;age:234"
Run Code Online (Sandbox Code Playgroud)
我已经写了一个方法,它接受这个字符串并返回一个:
Dictionary<string,string>
Run Code Online (Sandbox Code Playgroud)
如果有人能通过linq做到这一点很奇怪吗?
SLa*_*aks 13
假设分隔符不能出现在键或值中:
var dict = str.Split(';')
.Select(s => s.Split(':'))
.ToDictionary(a => a[0].Trim(), a => a[1].Trim()));
Run Code Online (Sandbox Code Playgroud)
这不是最快的方法,但它是最简单的方法.
你也可以使用正则表达式:
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()
);
Run Code Online (Sandbox Code Playgroud)