如何从具有多个分隔符的stringbuilder获取值?

时间:2012-03-05 07:35:13

标签: c#

我有一个stringbuilder输出 (AnimalAge;犬:20,目录:10,大鼠:5#\ r \ nAnimalType;鲸:哺乳动物,鳄鱼:爬行动物#\ r \ n)的

我希望将AnimalAge作为不同的实体,将AnimalType作为不同的输出。

如何分隔这些值,以便我可以在不同的文本框\标签中填充它?

1 个答案:

答案 0 :(得分:1)

我没有优化代码,但它应该看起来像

var text = new StringBuilder("AnimalAge;Dog:20,Cat:10,Rat:5#\r\nAnimalType;Whale:Mammal,Crocodile:Reptile#\r\n");

var cat = text.ToString().Split(new[] { "#\r\n" }, StringSplitOptions.RemoveEmptyEntries)
    .Select(x => x.Split(new[] { ";" }, StringSplitOptions.None))
    .Select(x => new 
    {
        Category = x[0],
        Values = x[1].Split(new[] { "," }, StringSplitOptions.None)
    })
    .Select(x => new
    {
        Category = x.Category,
        Values = x.Values.ToDictionary(y => y.Split(new[] { ":" }, StringSplitOptions.None)[0], y => y.Split(new[] { ":" }, StringSplitOptions.None)[1])
    })
    .ToList();

最后,您将获得一个Category / Values对象列表,其中Values是一个Dictionary