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>
结束
考虑到数据格式,您不得不将代码交给一次性解决方案。
更好的方法是使用json格式。获取Newtonsoft.json。它是一个序列化它的一行程序,也是一个反序列化程序的一行代码。为"文件"添加另一行。"写入"answers"文件"。"读取"然后离开。
使用JsonConvert.Serialize和JsonConvert.Deserialize可以处理大多数类(与xmlserializer不同)。
如果必须使用现有字符串作为输入,我建议您使用RegEx来解析每一行以创建对象。Regex是解决你的问题的老办法。