![]() |
|
найти часть строки в строке | ☑ | ||
---|---|---|---|---|
0
slaifer123
naïve
01.10.24
✎
17:10
|
Добрый день, как найти слово в строке
допустим имеем строку:"Привет, сегодня 1 января 2030 года". Нужно получить в новую переменную "сегодня 1 января" Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.156.21) |
|||
1
Волшебник
01.10.24
✎
17:10
|
Найти()
|
|||
2
slaifer123
naïve
01.10.24
✎
17:13
|
(1) так ее убрали в каком-то релизе
|
|||
3
Волшебник
01.10.24
✎
17:14
|
(2) Кто?!
Можете задействовать СтрНайти(), но Найти() благополучно существует в релизе 8.3.25.1394 |
|||
4
Timon1405
01.10.24
✎
17:48
|
регулярки же завезли, можно тестировать
Стр="Привет, сегодня 1 января 2030 года"; М = СтрНайтиПоРегулярномуВыражению(Стр,"(сегодня\s.*)\d{4}",); Если М.ПолучитьГруппы().Количество()>0 Тогда Результат = М.ПолучитьГруппы()[0].Значение; Иначе Результат= ""; КонецЕсли |
|||
5
Волшебник
02.10.24
✎
10:13
|
(4) Вы забили микроскопом гвоздь.
|
|||
6
Timon1405
02.10.24
✎
10:53
|
(5) не очень понимаю какая альтернатива со стрнайти()? год же может быть любым.
|
|||
7
Волшебник
02.10.24
✎
10:54
|
(6) Задача из сабжа попросту невозможна, а Вы бросились её решать регулярками. Надо отучить автора от постановки таких задач. Вот что мы должны сделать. Регулярки тут не помогут.
|
|||
8
Timon1405
02.10.24
✎
11:00
|
(7) можно же рассматривать задачу как упражнение. парсинг даты - довольно частая задача, например в разборе платежек
|
|||
9
Волшебник
02.10.24
✎
11:07
|
(8) Ок, имеем строки:
"Привет, сегодня 1 января 2030 года" "Привет, сегодня 29 февраля 2056 года" Как получить даты? |
|||
10
maxab72
02.10.24
✎
11:18
|
угу, разобрать дату в строке "Сегодня 24/10/02 в 10:00"...
|
|||
11
Гена
гуру
02.10.24
✎
11:20
|
(9) Текст между вторым и четвёртым пробелом?
|
|||
12
Волшебник
02.10.24
✎
11:22
|
(9)+ ChatGPT справился, только программный код на питоне
программный кодimport re from datetime import datetime def parse_date_from_string(s): # Паттерн для поиска даты в формате "день месяц год" pattern = r"(\d{1,2}) (\w+) (\d{4})" # Поиск всех совпадений с паттерном match = re.search(pattern, s) if match: day, month_str, year = match.groups() # Словарь для преобразования названий месяцев на русском языке в их числовой формат months = { "января": "01", "февраля": "02", "марта": "03", "апреля": "04", "мая": "05", "июня": "06", "июля": "07", "августа": "08", "сентября": "09", "октября": "10", "ноября": "11", "декабря": "12" } # Получение числового представления месяца month = months.get(month_str.lower()) if month: # Формирование даты в формате "день/месяц/год" date_str = f"{int(day):02}/{month}/{year}" try: # Преобразование строки в объект даты date_obj = datetime.strptime(date_str, "%d/%m/%Y") return date_obj except ValueError: return None return None # Примеры использования: print(parse_date_from_string("Привет, сегодня 1 января 2030 года")) print(parse_date_from_string("Привет, сегодня 29 февраля 2056 года")) Вывод: 2030-01-01 00:00:00 2056-02-29 00:00:00 |
|||
13
maxab72
02.10.24
✎
11:23
|
"Мартобря 86 числа. Между днем и ночью."
А еще народ ленится и любит сокращать: 12 янв 24 |
|||
14
Волшебник
02.10.24
✎
11:24
|
(13) Здесь нет даты.
|
|||
15
butterbean
02.10.24
✎
11:42
|
(14) чат GPT нашел в этом тексте дату "12 января 2024 года"
|
|||
16
DrZombi
гуру
02.10.24
✎
12:20
|
(2) Её убрали из помощника, а оно таки осталось там где и была.
...да в каком то релизе, (я не помню сам), оно было убрано физически, но этот релиз так быстро сменился, что мало кто что-то заметил... :) |
|||
17
Волшебник
02.10.24
✎
14:10
|
(15) Сообщение было отредактировано
|
|||
18
maxab72
02.10.24
✎
14:32
|
(17) а можно на форуме выводить отметку, что сообщение было отредактировано, и завести поле, типа "пояснение о причинах редактирования", обязательное к заполнению? и выводить эту причину как историю внизу сообщения курсивом? и дату редактирования.
|
|||
19
Мультук
гуру
02.10.24
✎
14:35
|
P.S.
Дело было давно, но имхо всё же было Давным давно msaccess считал, что 08/10/02 = 10.08.2022 но уже 13/10/02 = 13.10.2022 Это бага или фича? Или я вру и уже ничего не помню? |
|||
20
Волшебник
02.10.24
✎
15:17
|
(18) Разрешаю.
|
|||
21
vbus
02.10.24
✎
15:39
|
(9)
Упражнение &НаСервере Функция НайтиДатыНаСервере(Стр) Мес = Новый Структура("января,февраля,марта,апреля,мая,июня,июля,августа,сентября,октября,ноября,декабря", 1,2,3,4,5,6,7,8,9,10,11,12); РегВыр = "\b(\d{1,2})\s+(января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря)\s+(\d{4})\b"; СтрДаты=СтрНайтиПоРегулярномуВыражению(Стр, РегВыр); МассивСлов = СтрНайтиВсеПоРегулярномуВыражению(СтрДаты.Значение, "\b\w+\b"); Возврат Дата(МассивСлов[2].Значение, Мес[МассивСлов[1].Значение], МассивСлов[0].Значение); КонецФункции &НаСервере Процедура ПоискДат() Строки = Новый Массив; Строки.Добавить("Привет, сегодня 1 января 2030 года"); Строки.Добавить("Привет, сегодня 29 февраля 2056 года"); Для Каждого Стр Из Строки Цикл Сообщить(НайтиДатыНаСервере(Стр)) КонецЦикла; КонецПроцедуры 01.01.2030 0:00:00 29.02.2056 0:00:00 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |