我有一个大约3000行的文本文件。有些行以数字开头,有些则以文字开头。例如:
以数字开头的行:
001一些文字
0017一些文字
8一些文字......
以文字开头的行:
一些文字,
一些文字......
我想将以数字开头的行复制到result.text。
以text到log.txt开头的行。
非常感谢。
答案 0 :(得分:1)
可以在一个语句中为一个文件
完成WriteAllLines("new file",
ReadLines("source file")
.Where(line => line.Lenth > 0 && Char.IsDigit(line[0]))
);
请注意,它在内部逐行工作,即内存中一次只能有一行。将从输入处理读取一行并将其写入输出,然后读取下一行,依此类推。这是因为这些方法适用于IEnumerable<string>
。例如,如果您将文件读入数组,IEnumerable
不会缓冲整个文件。
您必须为两个输出文件重复此操作两次。因此,我建议采用以下方法,只读取输入文件一次:
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);
}
}
}
}
第二种方法也不会缓冲文件。
答案 1 :(得分:0)
这足以暗示这是你的功课。做你的研究!