gpt4 book ai didi

c# - 将字符串转换为多级字典

转载 作者:行者123 更新时间:2023-11-30 22:22:09 37 4
gpt4 key购买 nike

我有一个看起来像的文本文件

tabs.main="******"
tabs.settings="******"

settings.setting1="******"
settings.setting2="******"
settings.setting3="******"
settings.setting4="******"

settings.setting5.title="******"
settings.setting5.settingoption1="******"
settings.setting5.settingoption2="******"

我希望能够将其解析为多级字典。例如,我有一个看起来像这样的根字典 Dictionary<string, object>在那里我会有标签和设置,它们都是 Dictionary<string, object>他们自己。我想要的图形形式是:

Dictionary<string, object>
-> Dictionary<"tabs", object>
-> Dictionary<"main", "*******">
-> Dictionary<"settings", "*******">
-> Dictionary<"settings", object>
-> Dictionary<"setting1", "*******">

等等等等。这可能吗?如果是这样,有人可以给我一个正确方向的指示。

最佳答案

您将要遇到的问题是,您的一些键需要与值(可能是字符串)一起存储在字典中,而其中一些键需要与字典一起存储。

在您列出的示例中:

settings.setting5="******"
settings.setting5.settingoption1="******"

这两条线相互矛盾。 settings.settings5 会让键 settings5 在字典中存储一个值,但下一行期望 settings5 是其他值的字典。

你可以这样写一段代码:

var settings = new Dictionary<string, object>();
var lines = File.ReadAllLines("...");
foreach (var line in lines)
{
var parts = line.Split(new char[] { '=' }, 2);
if (parts.Length != 2) continue;

var keys = parts[0].Split('.');
var value = parts[1];

var dict = settings;
for (int i = 0; i < keys.Length - 1; i++)
{
if (!dict.ContainsKey(keys[i]))
dict.Add(keys[i], new Dictionary<string, object>());
dict = (Dictionary<string, object>)dict[keys[i]];
}

dict.Add(keys[keys.Length - 1], value);
}
  1. 它没有任何错误检查。
  2. 您会发现它确实填充了您的对象。从中检索值很痛苦。因为您必须将每个结果转换为字符串或另一个字典。

无论哪种方式,您都会发现您很可能希望避免为此目的创建字典的字典。

关于c# - 将字符串转换为多级字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13984102/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com