public List <POLine> Parse(string text) { List <POLine> transactionLines = new List <POLine>(); var groups = matchPOLine.GetGroupNames(); foreach (Match m in matchPOLine.Matches(text)) { POLine line = new POLine(); var id = m.Groups["id"].Value; var date = m.Groups["date"].Value; var time = m.Groups["time"].Value; var amount = m.Groups["amount"].Value; var note = m.Groups["note"].Value; line.ID = int.Parse(id); line.Date = date; line.Time = time; line.Amount = double.Parse(amount); line.Note = note; transactionLines.Add(line); } return(transactionLines); }
public List <POLine> Parse(string[] lines) { List <POLine> transactionLines = new List <POLine>(1000); POLine poLine = new POLine(); State state = State.ID; foreach (var line in lines) { if (string.IsNullOrEmpty(line)) { if (state >= State.Note) { transactionLines.Add(poLine); poLine = new POLine(); state = State.ID; } continue; } switch (state) { case State.ID: { poLine.ID = int.Parse(line); state++; break; } case State.DateTime: { var dt = line.Split('T'); poLine.Date = dt[0]; poLine.Time = dt[1]; state++; break; } case State.Amount: { poLine.Amount = double.Parse(line); state++; break; } case State.Note: { poLine.Note += line; state++; break; } } } return(transactionLines); }