C# 如何删除文本文件大小写数据中的附加逗号,使其与其他列不匹配或溢出

C# 如何删除文本文件大小写数据中的附加逗号,使其与其他列不匹配或溢出,c#,C#,我有一个文本文件,我想转换成CSV。在EXCEL导入向导中检查文件时,列和行如下图所示: 当我以.csv的形式读取文件并写入文件时,它会像下图一样结束,如突出显示的行所示 我注意到文件中的一些数据有多个逗号,这些逗号是数据所在位置以外的行。这是我无法理解的 我正在使用以下代码: class Program { static void AddComma(string s, TextWriter writer) { foreach (string line in s.Replace("\

我有一个文本文件,我想转换成CSV。在EXCEL导入向导中检查文件时,列和行如下图所示:

当我以.csv的形式读取文件并写入文件时,它会像下图一样结束,如突出显示的行所示

我注意到文件中的一些数据有多个逗号,这些逗号是数据所在位置以外的行。这是我无法理解的

我正在使用以下代码:

class Program
{
static void AddComma(string s, TextWriter writer)
{
    foreach (string line in s.Replace("\"", "").Split('\n'))
    {
        for (int i = 0; i < line.Length; i++)
        {
            if (i > 0)
            writer.Write(line[i]);
        }
        writer.WriteLine();
    }
}


static void Main(string[] args)
{
    TextReader reader = new StreamReader(@"C:\folder\sample.txt");
    string a = reader.ReadToEnd();
    reader.Close();

    FileStream aFile = new FileStream(@"C:\folder\sample.csv", FileMode.Create);
    AddComma(a, new StreamWriter(aFile));
    aFile.Close();


}
}
我有这个:

            for (int i = -1; i < line.Length; i++)
            {
                if (i > -1)
                writer.Write(line[i]);
            }
for(int i=-1;i-1)
writer.Write(第[i]行);
}
这确保我也将获得文件中从零开始的第一列


谢谢大家。

问题是您正在剥离分隔引号。CSV文件可以引用值。如果值中有逗号,则需要将其引用

在您的示例中,除文件扩展名外,文件已显示为CSV格式。我不知道您的实际生产文件是否更复杂,是否需要更多的格式。但是,在本例中,它只需要重命名文件


有关标准规范,请参见。有点浓。

嗯。我想我从未想过CSV会有一个规范。从没想过要看。我想这是首字母缩略词。谢谢。@Xenophile谢谢提示:我通过修改Replace方法解决了这个问题:请参阅代码。您是如何修改Replace方法的。如下所示-首先按“拆分列表”,然后遍历每个拆分项-一个接一个,从0-(n-2)项开始,如果起始字符以“开头,则用空字符串替换起始字符,对于n-1,则以结束“或者你采用了不同的方法吗?@Tej Kiran:请看上面的代码:我知道这听起来很普遍。但我花了一段时间让它工作,因为我还在学习这些东西。不确定这是否是最好的,但它可以工作。@UnserageGuy好的,我认为您需要获取要处理的项目,但您只想转换为csv格式,而不更改封闭字符或以字符结尾。我认为更好、更简单的方法是将其从txt重命名为csv。因为您需要遍历文本文件中的每一行,然后放入csv文件。试试看
            for (int i = -1; i < line.Length; i++)
            {
                if (i > -1)
                writer.Write(line[i]);
            }