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

  • Автор темы Автор темы soprano
  • Дата начала Дата начала

soprano

Client
Регистрация
25.08.2011
Сообщения
1 032
Реакции
1 265
Баллы
113
Регуляркой парсится цифра, например 4,5
Но на выходе получается 4.
Если ставлю вместо string double - ошибка.
Как сделать, чтобы не целое число правильно получалось?
 
Регуляркой парсится цифра, например 4,5
Но на выходе получается 4.
Если ставлю вместо string double - ошибка.
Как сделать, чтобы не целое число правильно получалось?
Я вас понять не могу, каким образом спаршенное число может выйти 4 в переменной, если парсит точно то, что вы ищите?
Покажите пожалуйста пример - скрин, видео, или проект.
 
Регулярка
C#:
Развернуть Свернуть Копировать
Status = Regex.Match(pattern, @"(?<=""rating"":).*?(?=,)").Value.;
парсит цифру 4.5
В конструкторе регулярок работает правильно - 4.5
Когда, спарсилась показывает - 4
 
Попробуйте так.
C#:
Развернуть Свернуть Копировать
(?<=""rating"":)\d+,\d+
Вы сами указали в регулярке, что бы он парсил до запятой.
 
Регулярка
C#:
Развернуть Свернуть Копировать
Status = Regex.Match(pattern, @"(?<=""rating"":).*?(?=,)").Value.;
парсит цифру 4.5
В конструкторе регулярок работает правильно - 4.5
Когда, спарсилась показывает - 4
Если у вас после нахождения слова должна быть запятая, напишите пожалуйста часть кода что парсите, поможем сложить по другому регулярку.
 
Вот к такому я пришел
C#:
Развернуть Свернуть Копировать
        Status = Regex.Match(pattern, @"(?<=""rating"":).*?(?=,)").Value;
        double d = Convert.ToDouble(Status);
        project.SendInfoToLog(d.ToString());
Но все равно показывает 4 вместо 4,5
 
Но все равно показывает 4 вместо 4,5
Попробуйте сами найти ошибку, она у вас перед носом))

2020-08-16_225522.jpg
 
Не совсем понял, вот исходник для регулярки
C#:
Развернуть Свернуть Копировать
"rating":4.5,
 
Не совсем понял, вот исходник для регулярки
C#:
Развернуть Свернуть Копировать
"rating":4.5,
А зачем в конвертируете, сразу статус в лог шлите и все.
Подумал у вас регулярка не правильная, а видимо вот эта строчка, ответственная за получение целого числа. Извиняюсь за невнимательность.
C#:
Развернуть Свернуть Копировать
double d = Convert.ToDouble(Status);
 
Вот что получается

61839
 
C#:
Развернуть Свернуть Копировать
(?<="rating":)[0-9]+(|\.)[0-9]+

Попробуйте эту регулярку

C#:
Развернуть Свернуть Копировать
(?<="rating":)[0-9]+((|\.)([0-9]+)|)

Или так, если целое число имеет место быть
 
Последнее редактирование:
  • Спасибо
Реакции: soprano
dizney
Помогло.
Спасибо всем.
 

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