C# 将删除的字符串转换为字典<;字符串,字符串>;在C中#

C# 将删除的字符串转换为字典<;字符串,字符串>;在C中#,c#,string,dictionary,delimiter,C#,String,Dictionary,Delimiter,我有一个字符串的格式 “key1=value1;key2=value2;key3=value3;” 我需要将其转换为上述键值对的字典 最好的办法是什么? 谢谢。你可以这样写,也可以自己循环写。不管怎样。最终,您将在上进行拆分获取项目对,然后打开=获取键和值 string input = "key1=value1;key2=value2;key3=value3;"; Dictionary<string, string> dictionary = input.TrimEnd(';

我有一个字符串的格式 “key1=value1;key2=value2;key3=value3;”

我需要将其转换为上述键值对的字典

最好的办法是什么?
谢谢。

你可以这样写,也可以自己循环写。不管怎样。最终,您将在
上进行拆分
获取项目对,然后打开
=
获取键和值

string input = "key1=value1;key2=value2;key3=value3;";
Dictionary<string, string> dictionary =
    input.TrimEnd(';').Split(';').ToDictionary(item => item.Split('=')[0], item => item.Split('=')[1]);
string input=“key1=value1;key2=value2;key3=value3;”;
字典=
input.TrimEnd(“;”).Split(“;”).ToDictionary(item=>item.Split(“=”)[0],item=>item.Split(“=”)[1]);
循环版本:

Dictionary<string, string> dictionary = new Dictionary<string, string>();
string[] items = input.TrimEnd(';').Split(';');
foreach (string item in items)
{
    string[] keyValue = item.Split('=');
    dictionary.Add(keyValue[0], keyValue[1]);
}
Dictionary Dictionary=newdictionary();
string[]items=input.TrimEnd(“;”).Split(“;”);
foreach(项中的字符串项)
{
字符串[]keyValue=item.Split('=');
Add(键值[0],键值[1]);
}
像这样的东西

var dict = text.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries)
               .Select(part => part.Split('='))
               .ToDictionary(split => split[0], split => split[1]);

当然,如果不满足这些假设,这将失败。例如,如果文本格式不正确,可能会引发
IndexOutOfRangeException
,如果存在重复的键,则会引发
ArgumentException
。每个场景都需要不同的修改。如果可能存在多余的空白,您可能需要一些
字符串。根据需要修剪
调用。

更新了Ani,以考虑末尾的分号。where子句将确保您在创建和输入之前拥有一个键和值

var dictionary = "key1=value1;key2=value2;key3=value3;"
    .Split(';')
    .Select (part  => part.Split('='))
    .Where (part => part.Length == 2)
    .ToDictionary (sp => sp[0], sp => sp[1]);

请看令人敬畏的空白忽略,纠正最后一个值是否具有正则表达式的分号幂:

        var dict = Regex.Matches("key1 = value1; key2 = value2 ; key3 = value3", @"\s*(.*?)\s*=\s*(.*?)\s*(;|$)")
        .OfType<Match>()
        .ToDictionary(m => m.Groups[1].Value, m => m.Groups[2].Value);
var dict=Regex.Matches(“key1=value1;key2=value2;key3=value3”,@“\s*(*?)\s*=\s*(*?)\s*(;|$))
第()类
.ToDictionary(m=>m.Groups[1]。值,m=>m.Groups[2]。值);

但是说真的,Ani应该得到.ToDictionary()的支持。我从来没有想到过这一点。

您可以使用JSON字符串来实现这一点,例如:

var dic = JsonConvert.DeserializeObject<Dictionary<int, string>>("{'1':'One','2':'Two','3':'Three'}");
var dic=JsonConvert.DeserializeObject(“{1':'One','2':'Two','3':'Three'}”);

这基本上是这个问题的重复:我想你必须替换你的
&
进行编码>,可能会出现[最佳解决方案]的重复。我更喜欢json格式的值,而不仅仅是随机文本。非常感谢。