Работа со строками

Автор ali_vlad, 15 февраля 2022, 14:08

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

ali_vlad

Не нашёл ответа в иетернете, поэтому пишу здесь. Уже задолбался искать.
Есть текстовая строка S
Напишите, пожалуйста, примеры, как получить:
- Длину строки S
- Х левых или правых символов S
- как сравнить две строковые переменные S1 и S2 без учёта регистра.
Задолбался искать, но так и не нашёл.

sokol92

Смотрите список функций Basic здесь.
Пишу по памяти:
- Длину строки S
 Len(S)
- Х левых или правых символов S
  Left(S, X)
  Right(S, X)
- как сравнить две строковые переменные S1 и S2 без учёта регистра.
 Lcase(S1)=Lcase(S2)    (самое надежное)
Владимир.

ali_vlad


at0mix

Цитата: sokol92 от 15 февраля 2022, 14:16Смотрите список функций Basic здесь.
неудобно оформлено.
недавно попалась дока по функциям - но не нашел ответ на следующий вопрос:
есть строка состоящая ил цифр - типа "123987056"
нужно взять символы по одному и получить из них цифры.
ну и сложить первые Х цифр, ответ вернуть.

eeigor

#4
См. пример. В табличке извлекаются до 10 цифр. Можно добавить ещё (протянуть вправо) в зависимости от разрядности самого большого числа.
Или нужен, если по-другому, простой макрос, расщепляющий строку: функции рабочего листа типа SPLIT() в Calc нет.

Функцию REGEX() можно заменить на MID().
D3: =IFNA(--(REGEX($A3;"\d";;D$2));"")
D3: =IFERROR(--(MID($A3;D$2;1));"")
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

bigor

Для вычисления суммы цифр строки
=SUM(--MID(A1;ROW(1:6);1)) массивная
6- это количество цифр в строке, которые суммируются
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

eeigor

#6
@Bigor, спасибо за наводку с ROW(). Забывается...

Полный автомат:
C3: {=SUM(--MID($A3;ROW(INDIRECT("1:"&$B3));1))}
Формула массива: Ctrl+Shift+Enter
Протягивание мышкой работать не будет из-за функции INDIRECT() в теле формулы.
Необходимо скопировать формулу и вставить в требуемый диапазон. Или скопировать методом дублирования: выделить саму формулу и ячейки ниже и нажать клавиши Ctrl+D.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

#7
Цитата: at0mix от 31 июля 2022, 12:19неудобно оформлено.
В браузере набираем Ctrl+F и ищем имя функции.

По теме: можно и простую (не массивную, без "волатильных" функций) формулу с той же идеей:
=SUMPRODUCT(--MID(A1; ROW($A$1:INDEX($A:$A;LEN(A1))); 1))
Владимир.

eeigor

#8
Цитата: sokol92 от 31 июля 2022, 15:47=SUMPRODUCT(--MID(A1; ROW(A1:INDEX(A:A;LEN(A1))); 1))
C3: =SUMPRODUCT(--MID($A3;ROW($A$1:INDEX($A:$A;$B3));1))

Теперь формулу можно протягивать мышкой без ограничений.
P.S. Составление нетривиальных формул требует постоянной тренировки. Как здесь. :)
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

Насчет постоянных тренировок согласен (как и в случае с регулярными выражениями), хотя формулы достаточно простые. Сложные формулы - это по части Михаила (БМВ). От каждого применения MMULT прихожу в восторг.  ;D
Владимир.

eeigor

#10
Капец! Мне не приходилось использовать эту функцию.
А выше: не все знают о том, что функция INDEX() может вместо значения возвращать ссылку после двоеточия.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community