繁体   English   中英

Double.Parse对于“ 10.00”检索值失败

[英]Double.Parse fails for “10.00” retrieved value

屏幕截图总结了问题:

在此处输入图片说明

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

如何“标准化”检索到的值,以使Decimal.Parse不会失败?

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

“ 10.00”

首先,我将检查您的区域设置以消除任何与期望的十进制分隔符之间的差异一样简单的事情。

如果那用空格隔开,则如果字符串10.00成功解析,则看起来10.00但未能解析的字符串实际上不能为 10.00

检查并确定字符串的每个字符的字符代码,并确认它确实是10.00而不是外观相同但实际上不同的某种奇特的Unicode(它可能还包括在显示时甚至不可见的字符)。

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

尝试这个:

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

您可能需要为System.Text.RegularExpressions添加using语句

我只替换一个有问题的字符,这是最安全的选择:

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

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

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

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

编辑:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM