C# 将字符串转换为十进制

C# 将字符串转换为十进制,c#,C#,在C#中,我试图将字符串转换为十进制 例如,字符串为“(USD 92.90)” 如何用decimal.parse fcn将其解析为十进制。您可以从reg exp开始提取数字部分,然后使用decimal.TryParse解析子字符串。首先,从字符串中提取数字。正则表达式\d+(.\d+)可能会有所帮助。虽然可以使用子字符串,但如果该数字周围的字符始终相同 然后对该字符串使用Decimal.Parse(或Double.Parse)。在分析字符串时,我总是喜欢使用TryParse来避免对无效字符串引发

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

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


如何用decimal.parse fcn将其解析为十进制。

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

首先,从字符串中提取数字。正则表达式
\d+(.\d+)
可能会有所帮助。虽然可以使用子字符串,但如果该数字周围的字符始终相同


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

在分析字符串时,我总是喜欢使用TryParse来避免对无效字符串引发异常:

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

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

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

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、我不知道如何通过数字方式。我仍然会使用TryParse(我注意到它使用相同的参数)…我喜欢这个。不过如果货币发生变化怎么办?@LB:如果你要处理多种货币,我会一次分析每种货币。由于这些值本身并不具有真正的可比性(例如,USD$15!=CAD$15),因此将它们全部放在一个数组中就有些毫无意义了。