将字符串转换为十进制
在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 }
正如其他人所说,首先使用正则表达式来提取数字部分。