提取小数点分隔符

时间:2009-08-31 13:43:55

标签: c# string internationalization decimal

我在C#中导入csv文件,有时使用'。',有时使用','作为小数点分隔符。

确定小数点分隔符的最佳方法是从最后一个字符到第一个字符的计数更好吗?

提前致谢。

Franklin Albricias。

4 个答案:

答案 0 :(得分:6)

如果您事先知道正确的文化(例如,因为您知道创建该文件的用户),您可以尝试使用相应的CultureInfoNumberFormatInfo来解析提供的值:< / p>

Decimal value = Decimal.Parse(input, new CultureInfo("es-ES"));

但是如果事先不知道该类型,则必须通过检查字符来手动检查它,直到找到分隔符。 (甚至这种方法也假设您始终拥有小数点分隔符,以便one写为1.0而不是1。)

您不能一个接一个地尝试每种预期的格式,因为您可能会得到误报。

10,000表示两种格式的有效不同

答案 1 :(得分:1)

为什么不将两者用作分隔符?

查看NumberFormatInfo

修改
对于每个值,尝试使用其中一个分隔符进行解析 如果失败,请尝试用另一个解析它。

答案 2 :(得分:0)

这取决于存储在csv文件中的实际数据和数据分隔字符(';'或','或'')。

如果所有数据始终采用浮点数表示法,则可以使用检查两种情况的正则表达式。您可以使用"d+,\d+"检查','"\d+\.\d+"分隔的值,使用'.'作为分隔符

答案 3 :(得分:0)

假设文件只包含数字 - 没有字符串和任何字符 - 并且至少有两列,您可以执行以下操作。

浏览第一行并查找分号。如果你找到一个,你用分号分隔数字,用逗号作为小数分隔符,否则用逗号分隔数字,用点作为小数分隔符。

在所有其他情况下,您将不得不使用启发式(有时得出错误的结论),或者您必须在两个假设下严格解析文件。