Ejemplo n.º 1
0
        public List <TBLForSpecificColumn> tbl = new List <TBLForSpecificColumn>(); //zmienna wynikowa
        public string readFile(string fileName, string newFileName, HashSet <string> keysToDisplay, HashSet <string> namesToDisplay)
        {
            var                   lines        = File.ReadLines(fileName);   //zczytanie wszystkich lini pliku
            Boolean               start        = false;                      //zmienna start odpowiedzialna za uruchomienie alorytmu analizy pliku
            string                startString  = FileManagement.StartString; // zmienna zawierajaca ciag znakow odpowiedzialny za rozpoczecie analizy
            string                endString    = FileManagement.EndString;   // zmienna zawierajaca ciag znakow odpowiedzialny za zatrzymanie analizy pliku
            string                key          = "";
            List <string>         names        = new List <string>();
            List <string>         values       = new List <string>();
            string                value        = "";
            string                from         = "";
            string                to           = "";
            string                name         = "";
            int                   idOfFeatures = 1;
            List <SpecificColumn> listOfValues = new List <SpecificColumn>(); //Lista przechowujaca kolejne wiersze Features

            foreach (var line in lines)
            {
                string singleLine = line.Trim();                       // usuniecie bialych spacji z poczatku i konca lini
                singleLine = Regex.Replace(singleLine, " {2,}", "\t"); //zastapienie wiecej niz 2 spacji pod rzad znakiem tabulacji
                string[] splitLine = singleLine.Split('\t');           // rozdzielenie jako elementy tablicy lini na podstawie znaku tabulacji
                if (splitLine[0].Contains(endString))                  //jezeli linia zawiera ciag znakow konca algorytmu zmienna start = false
                {
                    start = false;
                    values.Add(value);
                    if (keysToDisplay.Count == 0 || keysToDisplay.Contains(key))
                    {
                        SpecificColumn column = new SpecificColumn(); //stworzenie nowego obiektu SpecificColumn z aktualnymi wartosciami
                        column.From  = from;
                        column.Key   = key;
                        column.To    = to;
                        column.Name  = names;
                        column.Value = values;
                        listOfValues.Add(column);
                    }
                    names  = new List <string>();
                    values = new List <string>();
                    value  = "";
                    key    = "";
                    TBLForSpecificColumn tblTemp = new TBLForSpecificColumn(); //stworzenie obiektu TBL
                    tblTemp.mainName = "Features" + idOfFeatures.ToString();
                    idOfFeatures++;
                    listOfValues.ForEach(element => tblTemp.columns.Add(element));
                    this.tbl.Add(tblTemp); // dodanie nowego TBL do wszystkich obiektow TBL
                    listOfValues = new List <SpecificColumn>();
                }

                if (start)
                {
                    if (splitLine.Length > 1)                                                                      // jezeli linia zawiera slowo kluczowe plus wartosci to
                    {
                        if ((key != "" && keysToDisplay.Count == 0) || (key != "" && keysToDisplay.Contains(key))) //jezeli klucz nie jest pusty
                        {
                            values.Add(value);                                                                     //dodaj do listy wartosci aktualna wartosc
                            SpecificColumn column = new SpecificColumn();                                          //stworzenie nowego obiektu specific column odpowiadajacego wierszowi np. CDS
                            column.From  = from;
                            column.Key   = key;
                            column.To    = to;
                            column.Name  = names;
                            column.Value = values;
                            listOfValues.Add(column);
                        }
                        key    = splitLine[0]; //zczytanie nowego klucz np. CDS
                        names  = new List <string>();
                        values = new List <string>();
                        value  = "";
                        var res = this.getNumbers(splitLine[1]);
                        //from = splitLine[1].Substring(0, splitLine[1].IndexOf("."));
                        //to = splitLine[1].Substring(splitLine[1].LastIndexOf(".") + 1);
                        //from = from.Replace("\\D+", "");
                        //from = from.Replace("(", "");
                        //to = to.Replace("\\D+", "");
                        //from = this.replaceAll(from);
                        //to = this.replaceAll(to);
                        //Regex pattern = new Regex("[a-zA-Z]");
                        //to = pattern.Replace(to, "");
                        //from = pattern.Replace(from, "");
                        from = res[0];
                        to   = res[1];
                    }
                    else
                    {
                        if (splitLine[0].First() == '/' && splitLine[0].Contains('='))
                        {
                            name = splitLine[0].Substring(1, splitLine[0].IndexOf('=') - 1);
                            if (namesToDisplay.Count == 0 || namesToDisplay.Contains(name))
                            {
                                names.Add(name);
                                if (value != "")
                                {
                                    values.Add(value);
                                }
                                value = this.replaceAll(splitLine[0].Substring(splitLine[0].IndexOf('=') + 1));
                            }
                        }
                        else
                        {
                            if (namesToDisplay.Contains(name))
                            {
                                value += " " + this.replaceAll(splitLine[0]);
                            }
                        }
                    }
                }

                if (splitLine[0].Contains(startString)) // jesli linia zawiera ciag znakow rozpoczynajacy analize pliku
                {
                    start = true;                       // zmienna start jest rowna true
                }
            } //koniec petli foreach
            //for (int i = 0; i < values.Count; i++)
            //    Console.WriteLine(names[i] + " ==> " + values[i]);
            string results = "";

            foreach (var tbl in this.tbl) //zczytanie wszystkich features do jednej zmiennej w celu jej zapisania
            {
                results += tbl.ToString() + "\n";
            }
            if (!newFileName.Contains(".tbl")) //dodanie do nowego pliku rozszerzenia tbl jesli takowego nie posiada
            {
                newFileName += ".tbl";
            }
            if (File.Exists(newFileName)) //jezeli plik istnieje o podanej nazwie
            {
                File.Delete(newFileName); //zostanie nadpisany
            }
            using (FileStream fs = File.Create(newFileName))
            {
                Byte[] info = new UTF8Encoding(true).GetBytes(results); //zmiana zmiennej wynikowej na tablice bajtow
                fs.Write(info, 0, info.Length);                         //zapisanie wynikow do pliku
                System.Windows.Forms.MessageBox.Show("Created");        //wyswietlenie okna ze plik zostal utworzony
            }
            return("");
        }
Ejemplo n.º 2
0
        public string readFile(string fileName, string newFileName)
        {
            var                   lines        = File.ReadLines(fileName);
            Boolean               start        = false;
            string                startString  = "FEATURES";
            string                endString    = "//";
            string                key          = "";
            List <string>         names        = new List <string>();
            List <string>         values       = new List <string>();
            string                value        = "";
            string                from         = "";
            string                to           = "";
            int                   idOfFeatures = 1;
            List <SpecificColumn> listOfValues = new List <SpecificColumn>();

            foreach (var line in lines)
            {
                string singleLine = line.Trim();
                singleLine = Regex.Replace(singleLine, " {2,}", "\t");
                string[] splitLine = singleLine.Split('\t');
                if (splitLine[0].Contains(endString))
                {
                    start = false;
                    TBLForSpecificColumn tblTemp = new TBLForSpecificColumn();
                    tblTemp.mainName = "Features" + idOfFeatures.ToString();
                    idOfFeatures++;
                    listOfValues.ForEach(element => tblTemp.columns.Add(element));
                    this.tbl.Add(tblTemp);
                    listOfValues.Clear();
                }

                if (start)
                {
                    if (splitLine.Length > 1)
                    {
                        if (value != "")
                        {
                            values.Add(value);
                        }
                        if (key != "")
                        {
                            //  Console.WriteLine(key + " ==> " + value);
                            listOfValues.Add(new SpecificColumn(
                                                 key, from, to, names, values
                                                 ));
                            names.Clear();
                            values.Clear();
                            value = "";
                        }
                        if (!splitLine[0].Contains("misc_featur"))
                        {
                            //Console.WriteLine(splitLine.Length.ToString());
                            key  = splitLine[0];
                            from = splitLine[1].Substring(0, splitLine[1].IndexOf("."));
                            to   = splitLine[1].Substring(splitLine[1].LastIndexOf(".") + 1);
                            from = from.Replace("\\D+", "");
                            from = from.Replace("(", "");
                            to   = to.Replace("\\D+", "");
                            from = this.replaceAll(from);
                            to   = this.replaceAll(to);
                            Regex pattern = new Regex("[a-zA-Z]");
                            to   = pattern.Replace(to, "");
                            from = pattern.Replace(from, "");
                        }
                    }
                    else
                    {
                        if (splitLine[0].Contains("/") && splitLine[0].Contains("="))
                        {
                            if (value != "")
                            {
                                values.Add(value);
                            }
                            value = "";
                            names.Add(this.replaceAll(splitLine[0].Substring(0, splitLine[0].IndexOf("="))));
                            splitLine[0] = splitLine[0].Substring(splitLine[0].IndexOf("=") + 1);
                            splitLine[0] = this.replaceAll(splitLine[0]);
                        }
                        value += splitLine[0];
                    }
                }
                if (splitLine[0].Contains(startString))
                {
                    start = true;
                }
            }
            //for (int i = 0; i < values.Count; i++)
            //    Console.WriteLine(names[i] + " ==> " + values[i]);
            string results = "";

            foreach (var tbl in this.tbl)
            {
                results += tbl.ToString() + "\n";
            }
            if (!newFileName.Contains(".tbl"))
            {
                newFileName += ".tbl";
            }
            if (File.Exists(newFileName))
            {
                File.Delete(newFileName);
            }
            using (FileStream fs = File.Create(newFileName))
            {
                Byte[] info = new UTF8Encoding(true).GetBytes(results);
                fs.Write(info, 0, info.Length);
                System.Windows.Forms.MessageBox.Show("Created");
            }
            return("");
        }