Конкретирование строк в список строк - PullRequest
1 голос
/ 02 декабря 2011

У меня есть текстовый файл (который был загружен в список для каждой новой строки), с которым я работаю .. его формат примерно такой:

***CP6***
UNIT, PARTS
    some data here
    some more data here
        more data1
        more data2
    etc111
        etc222
    etc333
    etc444
    etc555
UNIT, PARTS
    11111
    22222
        2.1
        2.2
        2.3
    33333
and so on....

Я хотел бы взять строки между каждым UNIT, PARTS и объединить их в одну строку, чтобы она выглядела так:

theList[0] = UNIT, PARTS\n\tsome data here\n\tsome more data here\n\t\tmore data1\n\t\tmore data2\n\tetc111\n\t\tetc222\n\tetc333\n\tetc444\n\tetc555
theList[1] = UNIT, PARTS\n\t11111\n\t22222\n\t\t2.1\n\t\t2.2\n\t\t2.3\n\t33333
theList[n] = UNIT, PARTS\n\t.......

Может ли кто-нибудь помочь мне с этим?

EDIT:

Данные в списке .. Так что я думал что-то вроде foreach (var item in fileLineList) ...

EDIT2:

Я бездельничал и придумал это ... но, похоже, это не работает так, как я хотел ...

                foreach (var line in tempList1)
                {

                    if (isUnitPart == false)
                    {
                        if (line.ToUpper().Contains("\"UNIT\",\"PARTS\""))
                            isUnitPart = true;
                    }
                    else
                    {
                        if (line.ToUpper().Contains("\"UNIT\",\"PARTS\""))
                            isUnitPart = false;
                    }

                    if (isUnitPart == true)
                        concattedUnitPart = concattedUnitPart + line;

                    else
                    {
                        theList.Add(concattedUnitPart + Environment.NewLine);
                    }
                }

Ответы [ 3 ]

1 голос
/ 02 декабря 2011

Используйте ReadAllText , чтобы получить все строки в одном string.

Редактировать : Если все ваши данные находятся в списке:

string[] input = IO.File.ReadAllLines(path); //or a List<String>  
string[] delimiter = new[] { "UNIT, PARTS" };
string text = String.Join(Environment.NewLine, input);
var lines = from word in text.Split(delimiter, StringSplitOptions.None)      
            select line = (delimiter[0] + word)

Вам необходимо добавить в конечный результат сам разделитель, поскольку String.Split удаляет разделитель из возвращенного массива.

http://msdn.microsoft.com/en-us/library/c1bs0eda.aspx

1 голос
/ 02 декабря 2011
var units = new Regex("UNIT, PARTS",RegexOptions.Multiline)
          .Split(myString)
           .Where(c=> !string.IsNullOrEmpty(c)).ToArray();
1 голос
/ 02 декабря 2011

myString.Split(new string[]{"UNIT, PARTS"}, StringSplitOptions.None) даст вам

theList[0] = \n\tsome data here\n\tsome more data here\n\t\tmore data1\n\t\tmore data2\n\tetc111\n\t\tetc222\n\tetc333\n\tetc444\n\tetc555
theList[1] = \n\t11111\n\t22222\n\t\t2.1\n\t\t2.2\n\t\t2.3\n\t33333
theList[n] = \n\t....

, что, вероятно, то, что вы хотите:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...