如何通过新行字典将字符串拆分为键值对<string,string>

How to split a string into key-value pairs via new line dictionary<string,string>

字符串格式

addr,hname,beam,txrate,rxrate,dcap,ucap,txuse,rxuse,rxrssi0,rxrssi1,txrssi0,txrssi1,txper,rxper,txopqual
04:18:D6:bb:F4:C6,Name,0,270000,270000,295650,263250,31,17,35,36,37,35,124,229,0

期望的输出

addr = 04:18:D6:bb:F4:C6
hname = Name
beam = 0

等等... ... 我想在 t 键值中配对,但键是值的新行,并将它们放入字典中以供输出使用此代码有效,但我想知道是否有更有效的方法来执行此操作跳过空值

这是我目前所拥有的

Dictionary<string, string> INFO =  new Dictionary<string, string>();
var terminal = client.RunCommand("amstainfo");
var output = terminal.Result;
string[] line = output.Split(new string[] { "\n" }, StringSplitOptions.None);
string[] KEY = line[0].Split(new string[] { "," }, StringSplitOptions.None);
string[] VALUE = line[1].Split(new string[] { "," }, StringSplitOptions.None);
int i = 0;
foreach (var ist in KEY)
{
    INFO.Add(KEY[i], VALUE[i]);
    i++;
}

您可以在 foreach 循环中包含一个 if 语句,以在将值添加到字典之前检查它是否不为空或 null。

foreach (var ist in KEY)
{
    if(!string.IsNullOrEmpty(VALUE[i]))
    {
       INFO.Add(KEY[i], VALUE[i]);
    }
    i++;
}

这看起来相当简单:

var lines = text.Split(
    Environment.NewLine.ToCharArray(),
    StringSplitOptions.RemoveEmptyEntries);

var INFO =
    lines[0].Split(',')
        .Zip(lines[1].Split(','), (key, value) => new { key, value })
        .Where(x => !String.IsNullOrEmpty(x.value))
        .ToDictionary(x => x.key, x => x.value);

这给出: