Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.03.2021, 11:40
Профессор
Отправить личное сообщение для DDim1000 Посмотреть профиль Найти все сообщения от DDim1000
 
Регистрация: 20.10.2016
Сообщений: 223

Распознать дату в строке
Здравствуйте!
Есть строка: "Поезд №1375, прибывает 14 февраля 2021 в 08:20".
Вопрос: Можно ли распознать дату в строке, и привести к такому виду: 14.02.2021 ?
Ответить с цитированием
  #2 (permalink)  
Старый 03.03.2021, 11:50
Аватар для NeoN
Аспирант
Отправить личное сообщение для NeoN Посмотреть профиль Найти все сообщения от NeoN
 
Регистрация: 01.03.2013
Сообщений: 76

Если сообщение всегда по одному шаблону, то можно выдернуть регуляркой 14 февраля 2021 отсюда
например, вот такой:
"Поезд №1375, прибывает 14 февраля 2021 в 08:20".match(/(\d{1,2})\s+(\D+)\s+(\d{4})/)

Получим отдельно число, месяц, год. Месяц приводим к нужном числу. И вуаля! Склеиваем все вместе в нужную строку даты.
Ответить с цитированием
  #3 (permalink)  
Старый 03.03.2021, 12:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 30,447

DDim1000,
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/locale/ru.js"></script>
  <script>
moment.locale('ru');
let str = 'Поезд №1375, прибывает 14 февраля 2021 в 08:20';
alert(moment.utc(str.split(',').reverse(), 'll').format('DD.MM.YYYY'))
  </script>
Ответить с цитированием
  #4 (permalink)  
Старый 03.03.2021, 13:15
Профессор
Отправить личное сообщение для DDim1000 Посмотреть профиль Найти все сообщения от DDim1000
 
Регистрация: 20.10.2016
Сообщений: 223

Сообщение от рони Посмотреть сообщение
DDim1000,
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/locale/ru.js"></script>
  <script>
moment.locale('ru');
let str = 'Поезд №1375, прибывает 14 февраля 2021 в 08:20';
alert(moment.utc(str.split(',').reverse(), 'll').format('DD.MM.YYYY'))
  </script>
Второй подключенный скрипт, это что?
Ответить с цитированием
  #5 (permalink)  
Старый 03.03.2021, 13:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 30,447

DDim1000,
это русский язык для строки 4
Ответить с цитированием
  #6 (permalink)  
Старый 03.03.2021, 17:15
Профессор
Отправить личное сообщение для DDim1000 Посмотреть профиль Найти все сообщения от DDim1000
 
Регистрация: 20.10.2016
Сообщений: 223

Сообщение от NeoN Посмотреть сообщение
Если сообщение всегда по одному шаблону, то можно выдернуть регуляркой 14 февраля 2021 отсюда
например, вот такой:
"Поезд №1375, прибывает 14 февраля 2021 в 08:20".match(/(\d{1,2})\s+(\D+)\s+(\d{4})/)

Получим отдельно число, месяц, год. Месяц приводим к нужном числу. И вуаля! Склеиваем все вместе в нужную строку даты.
Подскажите, пожалуйста, как сделать такую же регулярку для номера поезда?
Ответить с цитированием
  #7 (permalink)  
Старый 03.03.2021, 17:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 30,447

DDim1000,
если строку можно разделить по запятой
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/locale/ru.js"></script>
  <script>
moment.locale('ru');
let str = 'Поезд №1375, прибывает 14 февраля 2021 в 08:20';
str = str.split(',');
str = str.map((a,i) => i ? moment.utc(a, 'll').format('DD.MM.YYYY') : a.replace(/\D/g, ''));
document.write(JSON.stringify(str) )
  </script>
Ответить с цитированием
  #8 (permalink)  
Старый 03.03.2021, 18:43
Профессор
Отправить личное сообщение для DDim1000 Посмотреть профиль Найти все сообщения от DDim1000
 
Регистрация: 20.10.2016
Сообщений: 223

Так не получается..., мне нужно отдельно получить номер...
Ответить с цитированием
  #9 (permalink)  
Старый 03.03.2021, 18:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 30,447

DDim1000,
в чём проблема заменить document.write?


let number  = +str[0], data = str[1];
Ответить с цитированием
  #10 (permalink)  
Старый 03.03.2021, 18:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 30,447

DDim1000,
или так ...
let str = 'Поезд №1375, прибывает 14 февраля 2021 в 08:20';
let number = +str.match(/(?<=№)\d+/);
alert(number);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фокусировка на найденой строке. Delphin911 Элементы интерфейса 2 15.11.2019 13:41
Найти в строке комбинацию символов rodiony4 Элементы интерфейса 4 03.10.2016 04:52
Преобразование строки в дату. Serious2008 Общие вопросы Javascript 5 28.11.2012 12:22
Как найти и преобразовать дату в строке? Sergey_New Общие вопросы Javascript 8 10.06.2011 08:31
Как определить какого типа данные в строке den9000 Общие вопросы Javascript 7 07.12.2010 09:57