gpt4 book ai didi

c# - 阅读前修剪值

转载 作者:行者123 更新时间:2023-12-05 02:01:22 25 4
gpt4 key购买 nike

我有一个 csv,我需要在一列中读取它包含一个整数值,但值后面有一个空格,所以在 csv 中的值为 "1,264 "

在我的课上

public int MyValue { get; set; }

但是当我尝试读取记录时,出现以下错误:

TypeConverterException: The conversion cannot be performed.Text: '1,264 'MemberType: System.Int32TypeConverter: 'CsvHelper.TypeConversion.Int32Converter' IReader state: ColumnCount: 0 CurrentIndex: 26 HeaderRecord:

显然我需要修剪字段中的空白区域。我无法控制初始格式的格式。

我可以使它成为一个字符串属性并在第二遍解析它,但我想看看是否有其他方法。

更新

我尝试删除空格,但仍然出现错误。我以为这可能是一个文化信息问题,当我阅读时,我有以下代码:

using (var reader = new StreamReader(@"C:\temp\file.csv"))
using (var csv = new CsvReader(reader, new CsvConfiguration(new CultureInfo("en-US")) {
TrimOptions = TrimOptions.Trim
})) {...}

更新 2

The code

考虑一个包含单列单行(除标题外)标题的文件:

MyValue 
"1,264 "

更新 3

我当前的语言环境规定逗号是小数分隔符,点是千位分隔符。

最佳答案

我深入研究了源代码并找到了解决方案。

如果您检查 Int32Converter 的来源您可能会看到,它使用成员中定义的 NumberStyles 作为属性进行转换或获取整数的默认值。

当我将 NumberStyles 属性设置为 Number 时,它无需任何其他更改即可正常工作。我更喜欢这个解决方案,因为我不必更改属性的预期类型。

所以我只需要将类定义更改为:

public class TestClass
{
[Name("MyValue"), CsvHelper.Configuration.Attributes.Optional, NumberStyles(NumberStyles.Number)]
public int MyValue { get; set; }
}

关于c# - 阅读前修剪值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66636216/

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