Double.Parse因" 10.00"而失败检索价值

时间:2017-07-17 20:10:03

标签: c#

屏幕截图总结了问题:

enter image description here

我无法控制检索到的值。它带有一些我无法弄清楚的时髦格式,即使看起来完全正常,解析也会失败。手动输入值可以正常工作。

我怎样才能"正常化"检索到的值,Decimal.Parse不会失败?

作为参考,这里是失败的字符串(复制和粘贴):

" 10.00"

4 个答案:

答案 0 :(得分:6)

首先,我会检查您的区域设置,以消除任何简单的预期小数分隔符差异。

如果它绘制一个空白,那么如果字符串10.00成功解析,那么看起来的字符串如10.00但无法解析的字符串实际上

10.00

检查并确定字符串中每个字符的字符代码,并确认它确实是10.00,而不是具有相同外观但实际上不同的某些外来Unicode(可能还包括不是甚至可以在显示时看到。)

答案 1 :(得分:1)

您可能会在要检索的字符串中隐藏某种特殊字符。

试试这个:

Double.Parse(Regex.Replace(decimalValue, @"[^0-9.,]+", ""))

您可能需要为System.Text.RegularExpressions

添加using语句

答案 2 :(得分:0)

我只会替换一个有问题的角色,这是最安全的选择:

s = s.Replace("\u200E", "");

答案 3 :(得分:-1)

正如Jeroen Mostert在评论中提到的,decimalValue中有一个非打印字符。

这是一个类似的问题,可以帮助你解决这个问题。

https://stackoverflow.com/a/15259355/7636764

编辑:

使用解决方案的string output = new string(input.Where(c => char.IsLetter(c) || char.IsDigit(c)).ToArray());部分,但在IsDigit之后也包含在|| char.IsPunctuation(c)中将获得您想要的结果。