Удаление текста после символа

Автор neg-56, 9 февраля 2022, 10:06

0 Пользователи и 1 гость просматривают эту тему.

neg-56

Есть столбец
2022-02-06 14:49:57.020322
2022-02-05 05:49:45.065665
2022-02-02 00:00:00
2022-02-02 00:00:00
2022-02-03 16:49:34.362732
2022-02-03 16:49:38.28461
2022-02-04 02:49:34.279737

Какое регулярное выражение нужно применить в замене что бы удалить все что после .(включая точку)

bigor

Добрый день
В данном случае можно и без регулярок обойтись
=TRIM(LEFTB(SUBSTITUTE(C18;".";REPT(" ";50));50))
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

eeigor

#2
Цитата: neg-56 от  9 февраля 2022, 10:06после .(включая точку)
\..*$

A2: 2022-02-06 14:49:57.020322

B2: =REGEX(A2;"\..*$";"")
B2: =REGEX(A2;"^[^.]*")

Прим. Первый вариант - с заменой, второй - без откатов назад и без замены (быстрее).
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

Какова конечная цель этого действия? Получить содержимое ячейки как дату (число)?
Если да, то:
=--SUBSTITUTE(A1;".";",")
Владимир.

eeigor

Цитата: sokol92 от  9 февраля 2022, 15:00Получить содержимое ячейки как дату (число)?
Красиво. Вероятно, это то, что нужно. А после точки это миллисекунды? Точнее, доли секунды?
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

#5
Да, доли секунды. Формула применима только для локализаций, у которых дробная доля чисел отделяется запятой. Если делать универсально, то как-то так:
=--SUBSTITUTE(SUBSTITUTE(A1;".";MID(3/2;2;1)); ",";MID(3/2;2;1))
Владимир.

eeigor

@sokol92, я ещё трюк с VLOOKUP не забыл, а тут новый трюк с определением десятичного разделителя. :)
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

#7
А куда деваться?  :)
Это универсальный прием: годится, например для SQL, PL/SQL, VBA, LO Basic...
Пример для Oracle SQL:
select to_number(translate(translate('1.2345', '.', substr(3/2, 2, 1)), ',', substr(3/2, 2, 1))) from dual
Владимир.