C#将字符串解析为对象

本文关键字:对象 字符串 | 更新日期: 2023-09-27 18:22:23

对于以下文本:

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> 结束

C#将字符串解析为对象

考虑到数据格式,您不得不将代码交给一次性解决方案。

更好的方法是使用json格式。获取Newtonsoft.json。它是一个序列化它的一行程序,也是一个反序列化程序的一行代码。为"文件"添加另一行。"写入"answers"文件"。"读取"然后离开。

使用JsonConvert.Serialize和JsonConvert.Deserialize可以处理大多数类(与xmlserializer不同)。

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

如果必须使用现有字符串作为输入,我建议您使用RegEx来解析每一行以创建对象。Regex是解决你的问题的老办法。