将字符串转换为十进制

时间:2009-10-28 12:35:10

标签: c#

在C#中,我正在尝试将字符串转换为十进制。

例如,字符串是“(USD 92.90)”

如何使用Decimal.Parse fcn将其解析为小数。

4 个答案:

答案 0 :(得分:21)

我在这里假设您尝试解析的字符串是实际货币值。

CultureInfo c = CultureInfo.CreateSpecificCulture(CultureInfo.CurrentCulture.Name);
c.NumberFormat.CurrencyNegativePattern = 14; // From MSDN -- no enum values for this
c.NumberFormat.CurrencySymbol = "USD";

decimal d = Decimal.Parse("(USD 92.90)", NumberStyles.Currency, c);

答案 1 :(得分:6)

您可以从reg-exp开始提取数字部分,然后使用Decimal.TryParse来解析子字符串。

答案 2 :(得分:1)

首先,从字符串中获取数字。正则表达式\d+(.\d+)?可能对此有所帮助。虽然你可以使用substring,但是这个数字周围的字符总是一样的。

然后在该字符串上使用Decimal.Parse(或Double.Parse)。

答案 3 :(得分:0)

在解析字符串时,我总是喜欢使用TryParse来避免为无效字符串抛出异常:

        string str =  "(USD 92.90)";
        decimal result;
        if (Decimal.TryParse(str, out result))
        {
            // the parse worked
        }
        else
        {
            // Invalid string
        }

正如其他人所说,首先使用正则表达式来提取数字部分。