Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解析csv文件,忽略引号c中的逗号#_C#_Parsing_Csv_Textfieldparser - Fatal编程技术网

C# 解析csv文件,忽略引号c中的逗号#

C# 解析csv文件,忽略引号c中的逗号#,c#,parsing,csv,textfieldparser,C#,Parsing,Csv,Textfieldparser,我目前正在考虑拆分一个CSV文件,该文件通过逗号读取到应用程序中,但是,在我不想拆分的情况下,有合法的逗号被保留在双引号中 当使用TextFieldParser时,这是读取我希望它读取的字段,但是它读取所有字段,然后我努力使它们位于正确的行上 public string ParseCSVForFields(string dataFileName) { var sb = new StringBuilder(); var line = new List&l

我目前正在考虑拆分一个CSV文件,该文件通过逗号读取到应用程序中,但是,在我不想拆分的情况下,有合法的逗号被保留在双引号中

当使用TextFieldParser时,这是读取我希望它读取的字段,但是它读取所有字段,然后我努力使它们位于正确的行上

 public string ParseCSVForFields(string dataFileName)
    {

        var sb = new StringBuilder();
        var line = new List<string>();
        using (TextFieldParser parser = new TextFieldParser(dataFileName))
        {
            parser.TextFieldType = FieldType.Delimited;
            parser.SetDelimiters(",");
            parser.HasFieldsEnclosedInQuotes = true;

            while (!parser.EndOfData)
            {
                //Processing row
                string currentRow = parser.ReadLine();
                string[] fields = parser.ReadFields();
                foreach (var field in fields)
                {
                //    this is where i am stuck
                }



            }

        }

        return null;

    }
publicsstringparsecsvforfields(stringdatafilename)
{
var sb=新的StringBuilder();
变量行=新列表();
使用(TextFieldParser parser=newtextfieldparser(dataFileName))
{
parser.TextFieldType=FieldType.Delimited;
parser.SetDelimiters(“,”);
parser.HasFieldsEnclosedInQuotes=true;
而(!parser.EndOfData)
{
//处理行
字符串currentRow=parser.ReadLine();
string[]fields=parser.ReadFields();
foreach(字段中的变量字段)
{
//这就是我被困的地方
}
}
}
返回null;
}
非常感谢您的任何帮助


谢谢

您正在调用
ReadLine
ReadFields
。这似乎有点可疑。删除
ReadLine
部分。

自己动手吗?或者使用文件帮助器HasFieldsEnclosedInQuotes表示您的值和包含在引号中的值,如:“val,val2,val3”,“val4”,然后解析器将返回“val,val2,val4”|“val4”我不理解当前描述中的问题。您能提供输入、预期输出和实际输出的示例吗?问题是,包含两个字段(如“a”、“13,21”)的CSV文件实际上没有用逗号分隔。示例代码将看到三个字段,而不是两个。除此之外,我还缺少parser.HasFieldsEnclosedInQuotes=true;