Мне нравится CxxTest также по тем же причинам. Это - заголовочный файл только так никакое требуемое соединение. Вы не застреваете с Perl, поскольку существует бегун Python также. Я буду рассматривать библиотеку Google скоро. Материал Повышения вытягивает в слишком большом количестве другого багажа.
Я здесь предполагается, что строка, которую вы пытаетесь проанализировать, является фактическим значением валюты.
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 для анализа подстроки.
Сначала извлеките число из строки. Здесь может помочь Regex \ 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
}
И, как говорили другие, сначала используйте регулярное выражение для извлечения только числовой части.