在C#中,我正在尝试将一个字符串转换为十进制数。
例如,字符串是“(USD 92.90)”。
你可以使用Decimal.Parse函数将其解析为十进制数。
例如,字符串是“(USD 92.90)”。
你可以使用Decimal.Parse函数将其解析为十进制数。
我这里的假设是您正在尝试解析的字符串是实际货币价值。
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);
您可以先使用正则表达式提取数字部分,然后使用Decimal.TryParse解析子字符串。
\d+(.\d+)?
可能会有所帮助。虽然如果该数字周围的字符始终相同,您可以使用子字符串。在解析字符串时,我总是更喜欢使用TryParse来避免因无效字符串而抛出异常:
string str = "(USD 92.90)";
decimal result;
if (Decimal.TryParse(str, out result))
{
// the parse worked
}
else
{
// Invalid string
}
正如其他人所说,首先使用正则表达式提取仅包含数字部分的内容。