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