如何从配置文件中解析多行值
How to parse multi line value from config file
我有如下属性文件:.我想将它存储在字典(键值对)中。
paragraph1~Para1 Line1
Para1 Line2
Para1 Line3
paragraph2~Para2 Line1
Para2 Line2
paragraph3~Para3 Line1
Para3 Line2
Para3 Line3
我使用以下代码 - 但它只能解析 1 行。它不解析多行。
所以对于dict["paragraph1"],值为"Para1 Line1"
foreach (var row in File.ReadAllLines("c:\temp\properties.txt"))
{
if (row == String.Empty)
{
continue;
}
dict.Add(row.Split('~')[0], string.Join("~", row.Split('~').Skip(1).ToArray()));
}
根据我从问题中了解到的情况,这应该可行:
string paragraph = String.Empty;
foreach (var row in File.ReadAllLines("s.txt").Where(row => row != String.Empty))
{
if (!row.Contains('~'))
{
dict[paragraph] += " " + row.Trim();
continue;
}
dict.Add(row.Split('~')[0], string.Join("~", row.Split('~').Skip(1).ToArray()));
paragraph = row.Split('~')[0];
}
生成[paragraph1, Para1 Line1 Para1 Line2 Para1 Line3]。
但不完全确定您使用 string.Join 做什么。这将产生相同的输出:
dict.Add(row.Split('~')[0], row.Split('~')[1]);
我有如下属性文件:.我想将它存储在字典(键值对)中。
paragraph1~Para1 Line1
Para1 Line2
Para1 Line3
paragraph2~Para2 Line1
Para2 Line2
paragraph3~Para3 Line1
Para3 Line2
Para3 Line3
我使用以下代码 - 但它只能解析 1 行。它不解析多行。 所以对于dict["paragraph1"],值为"Para1 Line1"
foreach (var row in File.ReadAllLines("c:\temp\properties.txt"))
{
if (row == String.Empty)
{
continue;
}
dict.Add(row.Split('~')[0], string.Join("~", row.Split('~').Skip(1).ToArray()));
}
根据我从问题中了解到的情况,这应该可行:
string paragraph = String.Empty;
foreach (var row in File.ReadAllLines("s.txt").Where(row => row != String.Empty))
{
if (!row.Contains('~'))
{
dict[paragraph] += " " + row.Trim();
continue;
}
dict.Add(row.Split('~')[0], string.Join("~", row.Split('~').Skip(1).ToArray()));
paragraph = row.Split('~')[0];
}
生成[paragraph1, Para1 Line1 Para1 Line2 Para1 Line3]。
但不完全确定您使用 string.Join 做什么。这将产生相同的输出:
dict.Add(row.Split('~')[0], row.Split('~')[1]);