C#将字符串解析为对象

时间:2015-11-18 02:40:23

标签: c# .net

以下文字:

Item 1:
student-pay
history 320.00
math 500.10 extra

Item 2:
history 220.00
math 200.10

我想将此文本解析为Item类。有没有更有效的方法来做到这一点?

我有以下内容:

            var result = input.Split(
                new[] { "item", "Item" }, 
                StringSplitOptions.RemoveEmptyEntries);

            foreach (string item in result)
            {
                var lineItems = item.Split(
                    new[] { Environment.NewLine }, 
                    StringSplitOptions.RemoveEmptyEntries);

                foreach (var lineItem in lineItems.Skip(1)) // remove ":"
                {
                        // split line again
// check if numeric
                }
            }

public class Course
{
    public bool StudentPay { get; set; }

    public ICollection<CourseItem> JobItems { get; set; }
}

public class CourseItem
{
    public string Name { get; set; }

    public decimal Cost { get; set; }

    public bool Extra { get; set; }
}

我想以List<Items>

结束

2 个答案:

答案 0 :(得分:5)

鉴于数据格式,您不得不手动编写一个解决方案。

更好的方法是使用json格式。获取Newtonsoft.json。它是一个衬里来连接它和一个衬管到解串器。为File.Write和File.Read添加另一行,然后离开。

使用JsonConvert.Serialize和JsonConvert.Deserialize,将适用于大多数类(与xmlserializer不同)。

答案 1 :(得分:-1)

Json可能是一个更好的解决方案,但它需要将输入字符串的控制格式化为json格式。

如果必须使用现有字符串作为输入,我建议您使用RegEx来解析每一行以创建对象。正则表达式是解决问题的老式方式。