Ошибка при конвертации данных Double

112
07 декабря 2019, 07:10

Есть данный баланс 19955.35 он отображается вот так http://prntscr.com/n02cai. Я ищу по локатору его, потом конвертирую games = pageobject / BalanceTextPartners = locator(xpatch) double balance = Convert.ToDouble(games.BalanceTextPartners.Text); появляется данный ерор Message: System.FormatException : Input string was not in a correct format. Подскажете как правильно будет, так как потом сниму некую сумму и буду через Assert.AreNotEqual сравнивать

Answer 1
Путь 1

У Double парсинга есть настройки культуры. В нашем регионе один разделительный знак, в сша -- другой. Да и вообще можно выставить кастомный знак-разделитель. В твоем случае должен сработать

    Convert.ToDouble(games.BalanceTextPartners.Text, CultureInfo.InvariantCulture);
Путь 2

Extension для парсинга decimal числа со строки(string).

Краткая суть экстеншна:

  • Не важно число на начале, середине или конце строки.
  • Не важно Там будет только "голое число" или куча "мусорных" символов. Лишние символы будут убраны.
  • Не важно какой делимитер стоит в настройках винды -- точка или запятая: будет парсить оба символа успешно в любом случае.
  • Возможность задать делимитер вручную.

    public static class StringExtension
    {
        public static double DoubleParseAdvanced(this string strToParse, char decimalSymbol = ',')
        {
            string tmp = Regex.Match(strToParse, @"([-]?[0-9]+)([\s])?([0-9]+)?[." + decimalSymbol + "]?([0-9 ]+)?([0-9]+)?").Value;
            if (tmp.Length > 0 && strToParse.Contains(tmp))
            {
                var currDecSeparator = System.Windows.Forms.Application.CurrentCulture.NumberFormat.NumberDecimalSeparator;
                tmp = tmp.Replace(".", currDecSeparator).Replace(decimalSymbol.ToString(), currDecSeparator);
                return double.Parse(tmp);
            }
            return 0;
        }
    }
    

Как использовать:

"It's 4.45 O'clock now".DoubleParseAdvanced(); // возвратит 4.45
"It's 4,45 O'clock now".DoubleParseAdvanced(); // возвратит 4.45
"It's 4:45 O'clock now".DoubleParseAdvanced(':'); // возвратит 4.45
READ ALSO
как задать условие PHP

как задать условие PHP

Как через if проверить есть ли в ShowViewContent('sotbit_seometa_bottom_desc'); какой-нибудь текст, если нет то в else вывести (сео-текст) ? Как это пока выглядит на сайте

133
Рисование фигур в php

Рисование фигур в php

Пробую рисовать в PHP но появилась идея залить на фон изображение, любое Возможно ли установить на фон любое изображение? Если дато как ? Моя...

104
Вывод цикла mysql php

Вывод цикла mysql php

Подскажите пожалуйста есть такая таблица:

123