Пример #1
0
        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);
        }