TextFieldParser将CSV添加到数字中

时间:2017-09-15 17:48:10

标签: c# .net csv

我正在使用TextFieldParser来读取CSV文件。 CSV中的这一特定列包含数字:3.14,2.65等。我正在阅读它们:

        var path = @"C:\myfiles\file.csv";
        using (TextFieldParser csvParser = new TextFieldParser(path))
        {
            csvParser.SetDelimiters(new string[] { "," });                

            csvParser.ReadLine();

            var numbers = new string[5];
            numbers[0] = csvParser.ReadFields()[23];
            numbers[1] = csvParser.ReadFields()[23];
            numbers[2] = csvParser.ReadFields()[23];
            numbers[3] = csvParser.ReadFields()[23];
            numbers[4] = csvParser.ReadFields()[23];

            return numbers;
        }

这样可行,但我收到的字符串会附加两个零;即。 3.14以“3.1400”返回。这有什么原因吗? TextFieldParser的配置选项,也许是?

3 个答案:

答案 0 :(得分:1)

您可以尝试将返回的字符串解析为浮点数,如下所示:

parseFloat(csvParser.ReadFields()[23]);

在这种情况下,您应该将数组类型从字符串更改为数字。或者使用toString()生成一个字符串 - 将其解析为浮动后的方法。

答案 1 :(得分:0)

我的感觉是代码可以在没有额外跟踪的情况下工作" 00"。如果在每个数字[x]上放置一个断点,您会发现它不包含其他字符。我的感觉是你的错误在其他地方......

至少当我在LINQPad中复制你的代码时,它没有产生你描述的错误......

答案 2 :(得分:0)

如果你在excel中创建.csv文件,那么添加额外的0并且不会通过他们的UI显示它们是臭名昭着的。

尝试在记事本中重新创建数据集,或者更好的记事本++。