Как получить нецелое число.

soprano

Client
Регистрация
25.08.2011
Сообщения
796
Благодарностей
840
Баллы
93
Регуляркой парсится цифра, например 4,5
Но на выходе получается 4.
Если ставлю вместо string double - ошибка.
Как сделать, чтобы не целое число правильно получалось?
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 441
Благодарностей
1 287
Баллы
113
Регуляркой парсится цифра, например 4,5
Но на выходе получается 4.
Если ставлю вместо string double - ошибка.
Как сделать, чтобы не целое число правильно получалось?
Я вас понять не могу, каким образом спаршенное число может выйти 4 в переменной, если парсит точно то, что вы ищите?
Покажите пожалуйста пример - скрин, видео, или проект.
 

soprano

Client
Регистрация
25.08.2011
Сообщения
796
Благодарностей
840
Баллы
93
Регулярка
C#:
Status = Regex.Match(pattern, @"(?<=""rating"":).*?(?=,)").Value.;
парсит цифру 4.5
В конструкторе регулярок работает правильно - 4.5
Когда, спарсилась показывает - 4
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 320
Благодарностей
5 424
Баллы
113
Попробуйте так.
C#:
(?<=""rating"":)\d+,\d+
Вы сами указали в регулярке, что бы он парсил до запятой.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 441
Благодарностей
1 287
Баллы
113
Регулярка
C#:
Status = Regex.Match(pattern, @"(?<=""rating"":).*?(?=,)").Value.;
парсит цифру 4.5
В конструкторе регулярок работает правильно - 4.5
Когда, спарсилась показывает - 4
Если у вас после нахождения слова должна быть запятая, напишите пожалуйста часть кода что парсите, поможем сложить по другому регулярку.
 

soprano

Client
Регистрация
25.08.2011
Сообщения
796
Благодарностей
840
Баллы
93
Вот к такому я пришел
C#:
        Status = Regex.Match(pattern, @"(?<=""rating"":).*?(?=,)").Value;
        double d = Convert.ToDouble(Status);
        project.SendInfoToLog(d.ToString());
Но все равно показывает 4 вместо 4,5
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 320
Благодарностей
5 424
Баллы
113

soprano

Client
Регистрация
25.08.2011
Сообщения
796
Благодарностей
840
Баллы
93
Не совсем понял, вот исходник для регулярки
C#:
"rating":4.5,
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 320
Благодарностей
5 424
Баллы
113
Не совсем понял, вот исходник для регулярки
C#:
"rating":4.5,
А зачем в конвертируете, сразу статус в лог шлите и все.
Подумал у вас регулярка не правильная, а видимо вот эта строчка, ответственная за получение целого числа. Извиняюсь за невнимательность.
C#:
double d = Convert.ToDouble(Status);
 

soprano

Client
Регистрация
25.08.2011
Сообщения
796
Благодарностей
840
Баллы
93

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 320
Благодарностей
5 424
Баллы
113

soprano

Client
Регистрация
25.08.2011
Сообщения
796
Благодарностей
840
Баллы
93
Вот что получается

61839
 

dizney

Client
Регистрация
25.01.2014
Сообщения
51
Благодарностей
52
Баллы
18
C#:
(?<="rating":)[0-9]+(|\.)[0-9]+
Попробуйте эту регулярку

C#:
(?<="rating":)[0-9]+((|\.)([0-9]+)|)
Или так, если целое число имеет место быть
 
Последнее редактирование:
  • Спасибо
Реакции: soprano

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 441
Благодарностей
1 287
Баллы
113

soprano

Client
Регистрация
25.08.2011
Сообщения
796
Благодарностей
840
Баллы
93
dizney
Помогло.
Спасибо всем.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)