首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从txt文件中读取航班清单并将其存储在datagrid视图中

如何从txt文件中读取航班清单并将其存储在datagrid视图中
EN

Stack Overflow用户
提问于 2017-02-16 14:38:06
回答 1查看 73关注 0票数 0

我打算用c#开发一个航空公司登机程序,我不知道如何从txt文件中读取航班清单,并在datagridview上转换为excel/store?

txt上的航班清单如下:

增强型旅客名单航班: ET 200日期:01 SEP16

账号注册表ETANV PT.OF登船:添加PT.OF目标: GDE

LNAME/FNAME/TYPE/SEAT/BAGS/WEIGHT/BAGTAG/TKT#/IN.FLT/TR.ORG/OT.FLT/F.DST/SPECIAL

Y类

001 ABDELA/SEID../M./24L/..1/..30/437913/0711726941217/......./.../......./.../....002 ABDI/MAHAMOUD/M./19L/..2/..20/437862/0712115502724/......./.../......./.../....。总计437863 :男婴女婴婴儿袋重量

。38 10 4 2 31 347

通行者总数:

总数:男,女,婴儿,婴儿袋重量。38 10 4 2 31 347

IN.FLT/TR.ORGN/OT.FLT/F.SDT入境航班/真实始发地/出境航班/最终目的地

EN

回答 1

Stack Overflow用户

发布于 2017-02-16 18:06:37

尝试下面的代码。我只得到了乘客名单,但你可以完成代码。解析完所有数据后,您可以在表单中添加信息:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.txt";

        enum State
        {
            GET_FLIGHT,
            EMBARKATION,
            PASSENGER_HEADER,
            CLASS,
            PASSENGERS,
            DONE
        }
        static void Main(string[] args)
        {
            StreamReader reader = new StreamReader(FILENAME);

            State state = State.GET_FLIGHT;

            string flight = "";
            DateTime date;
            string embarkation = "";
            string destination = "";
            string _class = "";


            string inputline = "";
            while((inputline = reader.ReadLine()) != null)
            {
                if (inputline.Trim().Length  > 0)
                {
                    switch (state)
                    {
                        case State.GET_FLIGHT :
                            string flightPattern = @"FLIGHT:\s+(?'flight'.+)DATE:\s+(?'date'[^$]+)$";
                            Match flightDate = Regex.Match(inputline, flightPattern);
                            flight = flightDate.Groups["flight"].Value.Trim();
                            string dateStr = flightDate.Groups["date"].Value.Trim();
                            date = DateTime.Parse(dateStr);

                            state = State.EMBARKATION;
                            break;

                        case State.EMBARKATION :
                            string embarkPattern = @"EMBARKATION:\s+(?'embarkation'.+)DEST:\s+(?'dest'[^$]+)$";
                            Match embarkDest = Regex.Match(inputline, embarkPattern);
                            embarkation = embarkDest.Groups["embarkation"].Value.Trim();
                            destination = embarkDest.Groups["dest"].Value.Trim();

                            state = State.PASSENGER_HEADER;
                            break;

                        case State.PASSENGER_HEADER:
                            state = State.CLASS;
                            break;

                        case State.CLASS :
                            _class = inputline;

                            state = State.PASSENGERS;
                            break;

                        case State.PASSENGERS :
                            Passenger.GetPassengers(inputline);
                            state = State.DONE;
                            break;

                    }
                }
            }

        }
        public class Passenger
        {
            public static List<Passenger> passengers = new List<Passenger>();

            public string number { get; set; }
            public string lName {get; set;}
            public string fName {get; set;}
            public string type { get; set;}
            public string seat { get; set; }
            public string bags {get; set; }
            public string weight { get; set; }
            public string tag { get; set;}
            public string ticket { get; set;}
            public string inFlight {get; set; }
            public string trOrg { get; set;}
            public string otFlt { get; set;}
            public string fDst { get; set; }
            public string special { get; set; }
            //LNAME/FNAME/TYPE/SEAT/BAGS/WEIGHT/BAGTAG/TKT#/IN.FLT/TR.ORG/OT.FLT/F.DST/SPECIAL

            public static void GetPassengers(string inputline)
            {
                string endPattern = @"(?'passengers'.+)\.\s\d+\sTOTALS:";
                Match passengersMatch = Regex.Match(inputline, endPattern);
                string passengers = passengersMatch.Groups["passengers"].Value.Trim();

                string passengerPattern = 
                          @"(?'no'\d+)\s" +
                          @"(?'lname'[^/]+)/" +
                          @"(?'fname'[^/]+)/" +
                          @"(?'type'[^/]+)/" +
                          @"(?'seat'[^/]+)/" +
                          @"(?'bags'[^/]+)/" +
                          @"(?'weight'[^/]+)/" +
                          @"(?'tag'[^/]+)/" +
                          @"(?'ticket'[^/]+)/" +
                          @"(?'inFlight'[^/]+)/" +
                          @"(?'trOrg'[^/]+)/" +
                          @"(?'otFlt'[^/]+)/" +
                          @"(?'fDst'[^/]+)/" +
                          @"(?'special'[\w\.]+)";

                MatchCollection  passengerMatch = Regex.Matches(passengers, passengerPattern);
                foreach (Match match in passengerMatch)
                {
                    Passenger newPassenger = new Passenger();
                    Passenger.passengers.Add(newPassenger);

                    newPassenger.number = match.Groups["no"].Value;
                    newPassenger.lName = match.Groups["lname"].Value;
                    newPassenger.fName = match.Groups["fname"].Value;
                    newPassenger.type = match.Groups["type"].Value;
                    newPassenger.seat = match.Groups["seat"].Value;
                    newPassenger.bags = match.Groups["bags"].Value;
                    newPassenger.weight = match.Groups["weight"].Value;
                    newPassenger.tag = match.Groups["tag"].Value;
                    newPassenger.ticket = match.Groups["ticket"].Value;
                    newPassenger.inFlight = match.Groups["inFlight"].Value;
                    newPassenger.trOrg = match.Groups["trOrg"].Value;
                    newPassenger.otFlt = match.Groups["otFlt"].Value;
                    newPassenger.fDst = match.Groups["fDst"].Value;
                    newPassenger.special = match.Groups["special"].Value; 

                }
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42266645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档