[英]Double.Parse fails for “10.00” retrieved value
首先,我将检查您的区域设置以消除任何与期望的十进制分隔符之间的差异一样简单的事情。
如果那用空格隔开,则如果字符串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.