以下文字:
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>
答案 0 :(得分:5)
鉴于数据格式,您不得不手动编写一个解决方案。
更好的方法是使用json格式。获取Newtonsoft.json。它是一个衬里来连接它和一个衬管到解串器。为File.Write和File.Read添加另一行,然后离开。
使用JsonConvert.Serialize和JsonConvert.Deserialize,将适用于大多数类(与xmlserializer不同)。
答案 1 :(得分:-1)
Json可能是一个更好的解决方案,但它需要将输入字符串的控制格式化为json格式。
如果必须使用现有字符串作为输入,我建议您使用RegEx来解析每一行以创建对象。正则表达式是解决问题的老式方式。