带后缀的字符串无法解析

时间:2015-12-17 14:18:08

标签: c# string parsing decimal

当有人将带有后缀解析的字符串传递给decimal时失败。

decimal testValue;
decimal.TryParse("5M", NumberStyles.Number, CultureInfo.CurrentCulture, out testValue)

解析后将返回false

为什么TryParse在传入带后缀的字符串时会失败?

2 个答案:

答案 0 :(得分:3)

因为Decimal.TryParse does not support it

  

根据style的值,s参数可能包含以下元素:

     

[WS] [$] [符号] [数字,]数字[.fractional位数] [E [登录]位数] [WS]

     

方括号([和])中的元素是可选的。下表描述了每个元素。

     

ws:可选的空格。如果样式包含NumberStyles.AllowLeadingWhite标志,则空格可以出现在s的开头。如果style包含NumberStyles.AllowTrailingWhite标志,它可以出现在s的末尾。

     

$:特定于文化的货币符号。它在字符串中的位置由提供程序参数的IFormatProvider.GetFormat方法返回的NumberFormatInfo对象的NumberFormatInfo.CurrencyNegativePattern或NumberFormatInfo.CurrencyPositivePattern属性定义。如果style包含NumberStyles.AllowCurrencySymbol标志,则货币符号可以出现在s中。

     

sign:可选标志。

     

digits:一系列数字,范围从0到9。

     

.:特定于文化的小数点符号。

     

fractional-digits:一系列数字,范围从0到9。

答案 1 :(得分:0)

因为无法解析您的字符串而不删除M部分。并且NumberStyles都没有这样的功能。

可以Replace建议您的M空字符串,但这只会解决您的情况,它不会成为一般解决方案。< / p>

decimal testValue;
decimal.TryParse("5M".Replace("M", ""), NumberStyles.Number, 
                                        CultureInfo.CurrentCulture, out testValue);

real-type-suffix 指定数字类型。它向C#编译器传授数字文字类型的含义。在字符串中,它表示 nothing 。这只是另一个角色。