簡體   English   中英

如何將特定行從一個文件復制到另一個文件?

[英]How to copy specific lines from one file to another?

我有一個約3000行的文本文件。 有些行以數字開頭,有些則以文本開頭。 例如:

以數字開頭的行:

001一些文字

0017一些文字

8一些文字...

以文本開頭的行:

一些文字,

一些文字...

我想將以數字開頭的行復制到result.text。

以text開頭的行到log.txt。

非常感謝。

一個文件可以用一個語句完成

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);
            }
        }
    }
}

第二種方法也不緩沖文件。

好的,這就是我要怎么做

  • 使用文件將文本文件讀取為字符串[]
  • 創建2個字符串列表以保存“結果”和“日志”
  • 對於字符串數組中的每個字符串,請使用charAt獲得第一個字符
  • 使用Char.IsNumber知道您應該將正在處理的行Add()到哪個列表
  • 再次使用File將列表寫入不同的文件

如果這是您的家庭作業,這就足夠了。 做你的研究!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM