作为标题,我试图将字符之间的2个或更多空格替换为单个空格。但是,以下代码不适用于非常大的输入文件。我怎样才能使它适用于巨大的输入文件呢?
static void Main(string[] args)
{
Regex pattern = new Regex(@"[ ]{2,}"); //Pattern = 2 or more space in a string.
StreamReader reader = new StreamReader(@"C:\CSharpProject\in\abc.txt");
string content = reader.ReadToEnd();
reader.Close();
content = pattern.Replace(content, @" "); //Replace 2 or more space into a single space.
StreamWriter writer = new StreamWriter(@"C:\CSharpProject\out\abc.txt");
writer.Write(content);
writer.Close();
}
答案 0 :(得分:2)
逐行,像这样:
static void Main(string[] args)
{
Regex pattern = new Regex(@"[ ]{2,}"); //Pattern = 2 or more space in a string.
using (StreamReader reader = new StreamReader(@"C:\CSharpProject\in\abc.txt"))
using (StreamWriter writer = new StreamWriter(@"C:\CSharpProject\out\abc.txt"))
{
string content;
while (null != (content = reader.ReadLine()));
writer.WriteLine (pattern.Replace (content, " "));
writer.Close();
reader.Close();
}
}
答案 1 :(得分:0)
正在一次性读取文件。有限制。而不是reader.ReaderToEnd(),使用reader.ReadLine()并一次读取和处理一行文件。或者,如果文件没有“行”,则以块的形式读取输入文件,并在处理时保存输出块。