C# 控制台应用程序c中的平面文件格式#

C# 控制台应用程序c中的平面文件格式#,c#,.net,visual-studio,C#,.net,Visual Studio,全部, 我有一个平面文件,我想删除结尾或中间的空行和额外的标题。以下是格式 预期格式: addsad, sadasd |sdsf-sdff-sfg |sffdff, sdfadgg , fg |04/15/20 12:30|sd sf 36 24567 |dsfg gfdgg fghjN

全部,

我有一个平面文件,我想删除结尾或中间的空行和额外的标题。以下是格式

预期格式:

addsad, sadasd                                          |sdsf-sdff-sfg  |sffdff, sdfadgg , fg                 |04/15/20 12:30|sd sf 36                                   
24567      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24568      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24569      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24579      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24571      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24572      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24573      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24574      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24575      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24576      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24577      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24578      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24579      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24581      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24582      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24583      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
格式错误-1:(末尾有空行,突出显示为*)

格式错误-2:

addsad, sadasd                                          |sdsf-sdff-sfg  |sffdff, sdfadgg , fg                 |04/15/20 12:30|sd sf 36                                   
24567      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24568      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24569      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24579      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24571      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24572      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24573      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
24574      |dsfg gfdgg fghjN                                        |1         |fhhh                                                                                     
                                                                                                                                                                         
                                                                                                                                                                         
                                                                                                                                                                         
                                                                                                                                                                         
                                                                                                                                                                         
                                                                                                                                                                         
                                                                                                                                                                         
                                                                                                                                                                         
                                                                                                                                                                         
                                                                                                                                                                         
                                                                                                                                                                         

编写的代码:(这只是删除所有空行)


要求:需要格式化错误的格式文件,以便获得预期的格式,需要删除空行(第一行除外)并删除重复的标题。附加图片以供参考

尝试逐行写入,如果遇到空行,则忽略该行和下一行(标题)

static void Main(string[] args)
{
    var ignoreNext = false;
    using var stream = new StreamWriter("targetFile.txt", true);
    foreach (var line in File.ReadLines("sourceFile.txt"))
    {

        if (line == null || line.Trim() == string.Empty)
        {
            ignoreNext = true;
        }
        else if (!ignoreNext)
        {
            stream.WriteLine(line);
        }
        else
        {
            ignoreNext = false;
        }
    }

}
以下是源文件:

和目标文件:

尝试逐行书写,如果您遇到空行,则忽略该行和下一行(标题)

static void Main(string[] args)
{
    var ignoreNext = false;
    using var stream = new StreamWriter("targetFile.txt", true);
    foreach (var line in File.ReadLines("sourceFile.txt"))
    {

        if (line == null || line.Trim() == string.Empty)
        {
            ignoreNext = true;
        }
        else if (!ignoreNext)
        {
            stream.WriteLine(line);
        }
        else
        {
            ignoreNext = false;
        }
    }

}
以下是源文件:

和目标文件:

尝试以下操作:

private void FixFile (string filename)
{ 
    //read existing file
    string[] lines = File.ReadAllLines(filename);

    //overwrite existing file
    using (StreamWriter sw = new StreamWriter(filename, false))
    {
        for (int i = 0; i < lines.Length; i++)
        {
            //trim leading/trailing spaces
            string currentLine = lines[i].Trim();

            //skip additional headers - header lines contain a date which has '/'
            if (i >= 2 && !String.IsNullOrEmpty(currentLine) && !currentLine.Contains('/'))
            {
                sw.WriteLine(currentLine);
            }
            else if (i < 2)
            {
                //keep first two lines
                sw.WriteLine(currentLine);
            }
        }

        //clean up
        sw.Flush();
        sw.Close();
        sw.Dispose();

    }
}
private void FixFile(字符串文件名)
{ 
//读取现有文件
string[]lines=File.ReadAllLines(文件名);
//覆盖现有文件
使用(StreamWriter sw=新StreamWriter(文件名,false))
{
对于(int i=0;i=2&&!String.IsNullOrEmpty(currentLine)&&&!currentLine.Contains('/'))
{
软件写入线(电流线);
}
否则如果(i<2)
{
//保持前两行
软件写入线(电流线);
}
}
//清理
sw.Flush();
sw.Close();
sw.Dispose();
}
}
尝试以下操作:

private void FixFile (string filename)
{ 
    //read existing file
    string[] lines = File.ReadAllLines(filename);

    //overwrite existing file
    using (StreamWriter sw = new StreamWriter(filename, false))
    {
        for (int i = 0; i < lines.Length; i++)
        {
            //trim leading/trailing spaces
            string currentLine = lines[i].Trim();

            //skip additional headers - header lines contain a date which has '/'
            if (i >= 2 && !String.IsNullOrEmpty(currentLine) && !currentLine.Contains('/'))
            {
                sw.WriteLine(currentLine);
            }
            else if (i < 2)
            {
                //keep first two lines
                sw.WriteLine(currentLine);
            }
        }

        //clean up
        sw.Flush();
        sw.Close();
        sw.Dispose();

    }
}
private void FixFile(字符串文件名)
{ 
//读取现有文件
string[]lines=File.ReadAllLines(文件名);
//覆盖现有文件
使用(StreamWriter sw=新StreamWriter(文件名,false))
{
对于(int i=0;i=2&&!String.IsNullOrEmpty(currentLine)&&&!currentLine.Contains('/'))
{
软件写入线(电流线);
}
否则如果(i<2)
{
//保持前两行
软件写入线(电流线);
}
}
//清理
sw.Flush();
sw.Close();
sw.Dispose();
}
}

对于您的情况,当您知道数据是什么样子时,我会稍微改变一下方法,然后

    var all = File.ReadAllLines(sourceDirectory).ToList();
    var dataLines = all.Where(l => Regex.IsMatch(l, @"^\d+"));
    var lines = all.Take(2).Concat(dataLines).ToList(); 
    File.WriteAllLines(targetDirectory, lines);

不确定您是否需要第一个空行,如果您不需要,则将其设为
all。跳过(1)。对于您的情况,请选择(1)

,当您知道数据的外观时,我会稍微改变处理方式,然后执行以下操作

    var all = File.ReadAllLines(sourceDirectory).ToList();
    var dataLines = all.Where(l => Regex.IsMatch(l, @"^\d+"));
    var lines = all.Take(2).Concat(dataLines).ToList(); 
    File.WriteAllLines(targetDirectory, lines);


不确定是否需要第一个空行,如果不需要,则将其设为
all。跳过(1)。取(1)

是的,这很容易(在合理范围内)。然而,这是一种在其他地方解决问题的技巧。如果你真的需要这么做的话,我建议你修改一下(如果可以的话),你必须给我们一个关于什么表示头的规则。我们可以写一些神奇的方法来读懂你的心思,或者说伪数据头永远是第二行,第一行永远是空的,第二行永远是头。这一切都很好,但是你说“删除重复的头”,我们怎么知道与实际数据相比,头是什么?哪些信息是标题中的、特殊的和唯一的,我们知道可以安全地删除重复的标题<代码>添加SAD不够好。。。注意:我仍然建议修复创建此文件的程序。第二行“Addsad”中的任何内容都是该文件的唯一头,如果在同一文件的不同行中重复此操作,则我们必须将其删除。在我提供的错误格式中,“Addsad”在第14行中重复,如图所示,应与空行一起删除,希望这能解释清楚?是的,这很容易(在合理范围内)。然而,这是一种在其他地方解决问题的技巧。如果你真的需要这么做的话,我建议你修改一下(如果可以的话),你必须给我们一个关于什么表示头的规则。我们可以写一些神奇的方法来读懂你的心思,或者说伪数据头永远是第二行,第一行永远是空的,第二行永远是头。这一切都很好,但是你说“删除重复的头”,我们怎么知道与实际数据相比,头是什么?哪些信息是标题中的、特殊的和唯一的,我们知道可以安全地删除重复的标题<代码>添加SAD不够好。。。注意:我仍然建议修复创建此文件的程序。第二行“Addsad”中的任何内容都是该文件的唯一头,如果在同一文件的不同行中重复此操作,则我们必须将其删除。在我提供的错误格式中,“Addsad”在第14行中重复出现,如图所示,应该与空行一起删除希望这可以解释?它不起作用,我得到的是“没有与字符串的必需形式参数'valuye'相对应的参数。IsNullOrWhiteSpace(string)@sukra我更新了答案,尝试了一下,效果很好。@TheGeneral它确实有效,我只是按照你的建议将它改成了
ReadLines
。啊,是的,我错了,这是我想要的答案。我可能已经将
line==null | | line.Trim()==string.Empty
替换成了
string.IsNullOrWhitespace(line)
为了使其更具可读性。它不起作用,我得到“没有与字符串的必需形式参数‘valuye’相对应的参数。IsNullOrWhiteSpace(string)@su