How to copy specific lines from one file to another?

[亡魂溺海] 提交于 2019-12-25 08:07:12

问题


I have a text file with about 3000 lines. Some lines start with numbers and some with text. For example:

Lines that start with numbers:

001 some text

0017 some text

8 some text...

Lines that start with text:

some text,

some text...

I want to copy lines that start with numbers to result.text.

Lines that start with text to log.txt.

Thanks a lot.


回答1:


It can be done in one statement for one file

WriteAllLines("new file", 
    ReadLines("source file")
    .Where(line => line.Lenth > 0 && Char.IsDigit(line[0]))
);

Note that it works on a line-by-line basis internally, i.e. there will be only one line at a time in memory. One line will be read from input processed and written to the output, then the next line and so on. This is because these methods work with IEnumerable<string>. IEnumerable does not buffer the whole file as would be the case if you read the file into an array, for instance.


You would have to repeat this twice for the two output files. Therefore I suggest the following approach, which reads the input file only once:

using (var log = CreateText("log.txt"))
using (var result = CreateText("result.txt")) {
    foreach (string line in ReadLines("source file")) {
        if (line.Length > 0) {
            if (Char.IsDigit(line[0])) {
                result.WriteLine(line);
            } else {
                log.WriteLine(line);
            }
        }
    }
}

This second approach does not buffer the file either.




回答2:


Okay here is how i would do it

  • use File to read your text file into a string[]
  • create 2 string Lists to save "results" and "logs"
  • for each string in the string array get the first character with charAt
  • use Char.IsNumber to know to what List you should Add() the line you are working on
  • use File again to write the Lists to different files

this is enough of a hint incase this is your homework. do your research!



来源:https://stackoverflow.com/questions/37377576/how-to-copy-specific-lines-from-one-file-to-another

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!