我想读取下面的字符串并将其保存在 C# 中的嵌套格式的模型列表中?
string =
main header
inner text
inner text
Inner header
inner text
inner text
Inner Header
closed header
closed header
inner text
var str2 = Regex.Split(source, "rn\s*");
var items = Regex.Split(source, "rn\s*").Select(x => x.Split(new[] { ':' }));
List<NestedTaskModel2> lstNestTaskModel2 = new List<NestedTaskModel2>();
bool flag = true;
foreach (var item in items)
{
NestedTaskModel2 objNestedTaskModel2 = new NestedTaskModel2();
if ((item[0].Trim() == "~Header~") && (flag))
{
objTaskModel.MainHeader = item[1].Trim();
flag = false;
}
else if (item.Length == 1)
{
objNestedTaskModel2.InnerText = item[0].Trim();
}
else if ((item.Length <= 2) && (item[0].Trim() == "~Header~"))
{
objNestedTaskModel2.InnerHeader = item[1].Trim();
}
lstNestTaskModel2.Add(objNestedTaskModel2);
}
objTaskModel.LstNestedTaskModel2 = lstNestTaskModel2;
}
}
public class TaskModel
{
public string MainHeader { get; set; }
public List<NestedTaskModel2> LstNestedTaskModel2 { get; set; }
}
public class NestedTaskModel2
{
public string InnerText { get; set; }
public string InnerHeader { get; set; }
}
预期成果 :
我想在列表中插入数据,但在字符串的主标题之后,内部文本应该插入嵌套列表,依此类推。
main header -- object
Inner Text -- Nested List
Inner Text -- Nested List
Inner Header -- Nested List
Inner Text -- Nested Nested List
Inner Text --- Nested Nested List
Inner Header -- Nested Nested List
Inner Text -- Again Nested List
像这样,我想创建一个列表并插入字符串。
你的问题对我来说有点不清楚,所以我想出你有这样的文本:
var str = @"~Header~:main header
inner text 1
inner text 2
~Header~:Inner header
inner inner text 1
inner inner text 2
~Header~: Inner inner Header
~Header~: closed Inner inner Header
~Header~:closed Inner header
inner text
~Header~: closed main header";
注意:
closed
字符串是关键!
在这种情况下,我可以建议您将字符串转换为XML,如下所示:
var lines = Regex.Split(str, @"[rn]+s*")
.Select(l => l.Trim().Split(':').Select(w => w.Trim()).ToArray());
var sb = new StringBuilder();
foreach (var items in lines)
{
if (items[0] == "~Header~")
{
sb.Append(items[1].StartsWith("closed", StringComparison.InvariantCultureIgnoreCase)
? "</Header>rn"
: $"<Header Name="{items[1]}">rn");
}
else
{
sb.Append($"<InnerText>{items[0]}</InnerText>rn");
}
}
var xml = XDocument.Parse(sb.ToString());
现在您有一个可序列化的对象 - XML 文档而不是原始字符串。
现在,您有很多选项可以更改 XML 并将其更改回字符串等。