CsvHelper忽略值

时间:2018-06-26 19:12:26

标签: c# csvhelper

在源文件中,有时我有时会为双字段使用连字符

448,218|7,948,218|-|448,218|-

我写了一个类型转换器来解决这个问题。

public class HyphenToZeroConverter : ITypeConverter
{
    public string ConvertToString(object value, IWriterRow row, MemberMapData memberMapData)
    {
        throw new NotImplementedException();
    }

    public object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
    {
        if (text == "-")
        {
            return 0.0;
        }
        return double.Parse(text, NumberStyles.AllowParentheses |
                                  NumberStyles.AllowThousands |
                                  NumberStyles.AllowDecimalPoint);
    }
}

但是转换无效Message=The conversion cannot be performed.Text:-

数字样式也不起作用,因为我得到了千位分隔符的异常和负数的括号。即使我没有使用任何类型转换器,也会发生这种情况。

您能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

当您调用该方法时,我真的看不到什么文本,但是要进行double.parse,您需要确保从文本中去除所有非数字字符,例如

text = text.Replace('|', String.Empty);

答案 1 :(得分:0)

此问题由CsvHelper的作者Josh Close回答

Github issue