我有以下字符串(实际上包含更多元素)
string content= " {
element1: one
element2: two
element3:three
}
{
element1: uno
element2: dos
element3:tres
}";
,我需要逐个处理此字符串
(元素是{
和}
内部的元素,在上面的例子中是两个元素,但是可以包含更多元素)
现在,我正在考虑执行常规的IndexOf
来找到{
和}
,然后一个个地提取子字符串。
我的问题是:有没有更有效的方法?
答案 0 :(得分:1)
假设您的格式不再有古怪之处(例如,定界符或转义序列),则可以使用LINQ解析该字符串。
var data = content.Replace("}","").Replace("\r\n","\n").Split('{')
.Select
(
block => block.Split('\n')
.Where
(
line => !string.IsNullOrWhiteSpace(line)
)
.Select
(
line => line.Split(new char[] {':'}, 2)
)
.ToDictionary
(
fields => fields[0].Trim(),
fields => fields[1].Trim()
)
)
.ToList();
foreach (var list in data)
{
foreach (var entry in list)
{
Console.WriteLine("{0}={1}", entry.Key, entry.Value);
}
}
输出:
element1=one
element2=two
element3=three
element1=uno
element2=dos
element3=tre