Преобразование строки к десятичному числу

Мне нравится CxxTest также по тем же причинам. Это - заголовочный файл только так никакое требуемое соединение. Вы не застреваете с Perl, поскольку существует бегун Python также. Я буду рассматривать библиотеку Google скоро. Материал Повышения вытягивает в слишком большом количестве другого багажа.

5
задан LB. 28 October 2009 в 12:35
поделиться

4 ответа

Я здесь предполагается, что строка, которую вы пытаетесь проанализировать, является фактическим значением валюты.

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);
21
ответ дан 18 December 2019 в 05:55
поделиться

Вы можете начать с reg-exp для извлечения части числа, а затем использовать Decimal.TryParse для анализа подстроки.

6
ответ дан 18 December 2019 в 05:55
поделиться

Сначала извлеките число из строки. Здесь может помочь Regex \ d + (. \ D +)? . Хотя вы можете использовать подстроку, если символы вокруг этого числа всегда одинаковы.

Затем используйте Decimal.Parse (или Double.Parse) в этой строке.

1
ответ дан 18 December 2019 в 05:55
поделиться

При синтаксическом анализе строк я всегда предпочитайте использовать TryParse, чтобы избежать возникновения исключений для недопустимых строк:

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

И, как говорили другие, сначала используйте регулярное выражение для извлечения только числовой части.

0
ответ дан 18 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: