带后缀的字符串解析失败
本文关键字:失败 字符串 后缀 | 更新日期: 2023-09-27 18:27:20
当有人将带后缀的字符串传递给decimal
时,解析失败。
decimal testValue;
decimal.TryParse("5M", NumberStyles.Number, CultureInfo.CurrentCulture, out testValue)
以下解析将返回false
。
为什么TryParse
在传入带后缀的字符串时失败?
因为Decimal.TryParse
不支持它。
根据样式的值,s参数可能包括以下元素:
[ws][$][sign][digits,]digits[.小数位数][e[sign]digits][ws]
方括号([和])中的元素是可选的。下表介绍了每个元素。
ws
:可选空白。如果样式包括NumberStyles.AllowLeadingWhite标志,则空格可以出现在s的开头。如果样式包含NumberStyles.AllowTrailingWhite标志,则它可以出现在s的末尾。
$
:一种特定于文化的货币符号。它在字符串中的位置由提供程序参数的IFormatProvider.GetFormat方法返回的NumberFormatInfo对象的NumberFormatInfo.CurrentNegativePattern或NumberFormatInfo.CurrentPositivePattern属性定义。如果样式包括NumberStyles.AllowCurrencySymbol标志,则货币符号可以显示在s中。
sign
:可选标志。
digits
:从0到9的一系列数字。
.
:特定于区域性的小数点符号。
fractional-digits
:从0到9的一系列数字。
因为如果不删除M
部分,就无法解析字符串。而NumberStyles
都没有这样的功能。
我可以用空字符串向Replace
建议您的M
,但这只能解决您的情况,而不是一般的解决方案。
decimal testValue;
decimal.TryParse("5M".Replace("M", ""), NumberStyles.Number,
CultureInfo.CurrentCulture, out testValue);
实数类型后缀指定数字类型。它向C#编译器教授了数字文字类型的含义。在字符串中,它的意思是"没有"。这只是另一个角色。