字符串格式
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++;
}
答案 0 :(得分:5)
这似乎很直接:
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);
这给出了:
答案 1 :(得分:4)
您可以在foreach循环中包含if语句,以在将值添加到字典之前检查该值是否为空或为空。
foreach (var ist in KEY)
{
if(!string.IsNullOrEmpty(VALUE[i]))
{
INFO.Add(KEY[i], VALUE[i]);
}
i++;
}