将字符串转换为十进制

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

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

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

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

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); 

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

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

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

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

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

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