C # Как удалить первую строку из моих текстовых файлов? - PullRequest
0 голосов
/ 18 декабря 2011

Я хочу создать приложение Windows Forms в Visual Studio, которое записывает текстовые файлы одним нажатием кнопки.

У меня есть текстовый файл (например, test.txt), который содержит

AAAA
BBBB
CCCC
DDDD
EOS
FFFF
GGGG
HHHH
IIII
EOS
JJJJ
KKKK
LLLL
MMMM
NNNN
EOS
EOF

Тогда я хотел бы разделить его на несколько других текстовых файлов

**bag1.txt**
AAAA
BBBB
CCCC
DDDD
EOS

**bag2.txt**
EEEE
FFFF
GGGG
IIII
EOS

**bag3.txt**
JJJJ
KKKK
LLLL
MMMM
NNNN
EOS
EOF

это код,

private void read3btn_Click(object sender, EventArgs e)
    {
        string fileName = textBox1.Text;
        TextReader sr = new StreamReader(fileName);
          //This allows you to do one Read operation.

        string s = sr.ReadToEnd();;
        sr.Close();

        string[] bags = s.Split(new string[] {"EOS"}, StringSplitOptions.None);

        // This will give you an array of strings (minus the EOS field)
        // Then write the files...

        System.IO.File.WriteAllText(@"D:\Program-program\tesfile\bag1.txt", bags[0] + "EOS");  //< -- Add this you need the EOS at the end field the field

        System.IO.File.WriteAllText(@"D:\Program-program\tesfile\bag2.txt", bags[1] + "EOS");

        System.IO.File.WriteAllText(@"D:\Program-program\tesfile\bag3.txt", bags[2] + "EOS" + bags[3]);

   }}

Затем вывод получится таким образом

**bag1.txt**
    AAAA
    BBBB
    CCCC
    DDDD
    EOS

**bag2.txt**

EEEE
FFFF
GGGG
IIII
EOS

**bag3.txt**

JJJJ
KKKK
LLLL
MMMM
NNNN
EOS
EOF

к сожалению, выходные данные в пакетах [1] и пакетах [2] содержат пустую строку в первой строке, есть ли способ обновить код?

Ответы [ 3 ]

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

Позвоните .Trim(), чтобы удалить начальные пробелы.

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

Ваш "EOS" разделитель не содержит символа новой строки. Попробуйте:

string[] bags = s.Split(new string[] {"EOS\n"}, StringSplitOptions.None);

Ваш входной файл

...DDDD\nEOS\nEEEE\n...

После разделения вашего кода вы получите:

...DDDD\n  EOS  \nEEEE\n...

Обратите внимание на ведущий \n перед EEEE. Включив \n в ваш разделитель, вы получите:

...DDDD\n  EOS\n  EEEE\n...
0 голосов
/ 25 июня 2014

Хорошо, это не большая проблема :) Когда вы читаете ваш файл, вы получаете строку типа «AAA \ nBBB \ nCCC \ nDDD \ nEOS \ nEEE \ nFFF \ n ... EOS \ nJJJ \ n ...«Если обрезать строку только в« EOS », вы получите следующее:

« AAA \ nBBB \ nCCC \ nDDD \ n "« \ nEEE \ nFFF \ n ... "" \ nJJJ ..."

Поскольку метод Split () удаляет строку" EOS ", но не новую строку, которая следует за ней:)

string[] bags = s.Split(new string[] {"EOS\n"}, StringSplitOptions.None);

.. это должно работать нормально:)

...