C# 将带分隔符的字符串转换为字典<;字符串,字符串>;
我有一个字符串的格式C# 将带分隔符的字符串转换为字典<;字符串,字符串>;,c#,string,dictionary,delimiter,C#,String,Dictionary,Delimiter,我有一个字符串的格式 =key1=value1=key2=value2=key3=value3 对于上述键值对,我需要将其转换为字典。 最好的办法是什么 我试过这个: var input = "key1=value1=key2=value2=key3=value3"; var dict = Regex.Matches(input , @"\s*(.*?)\s*=\s*(.*?)\s*(=|$)") .OfType<Match>()
=key1=value1=key2=value2=key3=value3
对于上述键值对,我需要将其转换为字典
。
最好的办法是什么
我试过这个:
var input = "key1=value1=key2=value2=key3=value3";
var dict = Regex.Matches(input , @"\s*(.*?)\s*=\s*(.*?)\s*(=|$)")
.OfType<Match>()
.ToDictionary(m => m.Groups[1].Value, m => m.Groups[2].Value);
var input=“key1=value1=key2=value2=key3=value3”;
var dict=Regex.Matches(输入@“\s*(.*?\s*=\s*(.*?\s*(=|$)”)
第()类
.ToDictionary(m=>m.Groups[1]。值,m=>m.Groups[2]。值);
var dict=new Dictionary();
var input=str.Split(新[]{'='},StringSplitOptions.RemoveEmptyEntries);
对于(int i=0;i这可以通过一点Linq实现:
"=key1=value1=key2=value2=key3=value3"
.Split('=') // Split into an array of strings
.Skip(1) // Skip the first (empty) value
.Select((v, i) => new { v, i }) // Get value and index
.GroupBy(x => x.i / 2) // Group every pair together
.ToDictionary(g => g.First().v, // First item in group is the key
g => g.Last().v) // Last item in group is the value
所有一行(没有换行符/回车符或其他空格)?全部由等号字符分隔,键或值不可能包含等号?创建一个函数,解析字符串并在=
上拆分字符串,然后您需要确定是在键还是值上,然后插入它们。
"=key1=value1=key2=value2=key3=value3"
.Split('=') // Split into an array of strings
.Skip(1) // Skip the first (empty) value
.Select((v, i) => new { v, i }) // Get value and index
.GroupBy(x => x.i / 2) // Group every pair together
.ToDictionary(g => g.First().v, // First item in group is the key
g => g.Last().v) // Last item in group is the value