带后缀的字符串解析失败

本文关键字:失败 字符串 后缀 | 更新日期: 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#编译器教授了数字文字类型的含义。在字符串中,它的意思是"没有"。这只是另一个角色。