gpt4 book ai didi

c# - 使用 Filehelpers 库忽略小数字段中的美元货币符号 ($)

转载 作者:行者123 更新时间:2023-12-02 02:26:50 24 4
gpt4 key购买 nike

假设我有一个像这样的 Filehelpers 类:

[DelimitedRecord(",")]
public class SomeRecord
{
public string Field1;
public decimal Field2;
}

如果我尝试导入这样的 CSV 记录:

hello,$4.00

我收到 FileHelpers.ConvertException:“将 '$4.00' 转换为类型时出错:'十进制'。”

如何让 Filehelpers 忽略 $ 符号?

最佳答案

我认为您需要编写自己的转换器并将该转换器用于Field2。这并不困难,您所需要做的就是创建一个扩展 ConverterBase 的类。例如:

public class CurrencyConverter : ConverterBase
{
private NumberFormatInfo nfi = new NumberFormatInfo();

public CurrencyConverter()
{
nfi.NegativeSign = "-";
nfi.NumberDecimalSeparator = ".";
nfi.NumberGroupSeparator = ",";
nfi.CurrencySymbol = "$";
}

public override object StringToField(string from)
{
return decimal.Parse(from, NumberStyles.Currency, nfi);
}
}

然后您可以在 Field2 属性上使用该转换器:

[DelimitedRecord(",")]
public class SomeRecord
{
public string Field1;
[FieldConverter(typeof(CurrencyConverter))]
public decimal Field2;
}

$4.00 将被解析为 4.00。

显然我上面的代码不是那么健壮。您可能更喜欢使用 TryParse 而不仅仅是 Parse,如果失败则返回 0,但您明白了。

关于c# - 使用 Filehelpers 库忽略小数字段中的美元货币符号 ($),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25283510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com