在C#中,我正在尝试将字符串转换为十进制。
例如,字符串是“(USD 92.90)”
如何使用Decimal.Parse fcn将其解析为小数。
答案 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
}
正如其他人所说,首先使用正则表达式来提取数字部分。