Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过新行字典将字符串拆分为键值对<;字符串,字符串>;_C#_String_Dictionary_String Split - Fatal编程技术网

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

C# 如何通过新行字典将字符串拆分为键值对<;字符串,字符串>;,c#,string,dictionary,string-split,C#,String,Dictionary,String Split,字符串格式 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 等等。。

字符串格式

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 key值中配对,但是key是一个新行形式的值,并将它们放入字典中进行输出。使用此代码可以工作,但是我想知道是否有一种更有效的方法可以跳过空值

这就是我目前所拥有的

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++;
}
Dictionary INFO=newdictionary();
var terminal=client.RunCommand(“amstainfo”);
var输出=终端结果;
string[]line=output.Split(新字符串[]{“\n”},StringSplitOptions.None);
字符串[]键=行[0]。拆分(新字符串[]{,“},StringSplitOptions.None);
字符串[]值=行[1]。拆分(新字符串[]{,“},StringSplitOptions.None);
int i=0;
foreach(变量在键中)
{
信息添加(键[i],值[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);
这使得:


使用
StringSplitOptions。删除mptyentries
而不是
StringSplitOptions。没有将对值重新排序的
@EZI。键值关联将丢失。此答案中是否有一些拼写错误需要更正?
where
后面的括号和2次
.ToDictionary
@Marwie-对不起,我完成了一次基本编辑。我已经修好了。@Oluwafemi-现在修好了。