C# 中的字符串到字典转换
本文关键字:字典 转换 字符串 | 更新日期: 2023-09-27 18:30:34
结果字符串包含输入字符串:1 2 3 a b c
预期操作:
1 a
2 b
3 c
我试过什么:
resultKV=result.Split(''t');
foreach (string KV in resultKV)
{
Console.WriteLine(KV);
}
var parts = "1 2 3 a b c".Split();
var dict = parts.Select((s, inx) => new { s = s, inx = inx })
.GroupBy(x => x.inx % (parts.Length / 2))
.ToDictionary(x => x.First().s, x => x.Last().s);
使用副作用,可以更短地完成
var parts = "1 2 3 a b c".Split();
int inx = 0;
var dict = parts.GroupBy(x => inx++ % (parts.Length / 2))
.ToDictionary(x => x.First(), x => x.Last());
string input = "1 2 3 a b c";
var parts = input.Split(' ');
if (parts.Length % 2 == 0)
{
var d = new Dictionary<string, string>();
var halfLength = parts.Length / 2;
for (int i = 0; i < halfLength; i++)
{
d[parts[i]] = parts[halfLength + i];
}
// at this stage the dictionary will contain the desired result
}
else
{
Console.WriteLine("Must have a pair number to build the dictionary");
}
据我所知,我会这样解决:
1. 将输入字符串分成两半,这样你就有了第 1 部分和第 2
部分2.迭代其中一个字符串并逐个打印出字符
我不知道任何 c#,但这应该很容易实现
编辑
如果要将解决方案应用于其他字符串,则可能需要检查两个部分是否具有相同的长度等内容。
拆分是否会导致多个项目?或者换句话说:这是正确的转义顺序吗?如果是这样,也许您可以执行以下操作:
int l = resultKV.lenght/2;
if(l % 2 == 0)
for(int i = 0; i < l; i++){
Console.WriteLine(resultKV[i]); Console.WriteLine(resultKV[i+l]);
}
(未测试)