Текст и строки
Регистр, края строки, выбор знака, обработка списков, случайные значения и повтор запроса с точными примерами.
Эти функции преобразуют одну строку или список строк прямо в поле проекта. Сначала проверьте , затем выберите операцию по результату, который должен получиться.
Общая запись
Обычная функция начинается и заканчивается одинаковой меткой. Самостоятельное выражение дополнительно заключается в круглые скобки:
Например:
Результат — CATALOG. Входным значением может быть обычный текст, переменная или результат вложенной функции. Закрывающая метка обязательна: (|UPPER|catalog) не является законченной функцией.
(|LOWER|MainTeam|LOWER|) вычисляется как отдельное выражение и возвращает mainteam.
|DV|[Team]=(|LOWER||PARS|[1]|LOWER|) сохраняет преобразованный результат первого разборщика.
Что выбрать
Изменить знаки
LOWER, UPPER, FUPPER меняют регистр, а REMOVENUM удаляет цифры от 0 до 9.
Проверить край или длину
FDSPACE и EDSPACE обрабатывают края, LENGTH считает длину, а GETCHAR возвращает знак по номеру.
Обработать список строк
DEMPTYSTR, DUPDEL, GETLINE, GETCOUNT, FILTERLINES и SORTLINES работают с многострочным значением.
Случайность или повтор
RANDOM создаёт строку, SHUFFLE меняет порядок строк, а REPEAT повторяет выполнение запроса.
Регистр и состав строки
|LOWER|
LOWER переводит все буквы входной строки в нижний регистр. Цифры, пробелы и знаки препинания не меняются.
Результат:
|UPPER|
UPPER переводит все буквы входной строки в верхний регистр.
Результат:
Обе функции используют правила регистра Windows. Они не заменяют буквы транслитерацией и не меняют кодировку строки.
Края, длина и позиция
|FDSPACE|
FDSPACE последовательно удаляет пробельные знаки с начала обычной непустой строки.
Результат:
|EDSPACE|
EDSPACE удаляет с конца пробелы, знаки табуляции и переводы строк.
Результат:
Пробельная строка не становится гарантированно пустой
Текущее выполнение FDSPACE прекращает удаление, когда остаются два знака, а EDSPACE всегда оставляет хотя бы один знак. Поэтому строка только из пробелов не является надёжной проверкой пустого значения: сначала задайте явное правило, что такой вход недопустим.
Простые операции со списком
Многострочное значение рассматривается как последовательность строк. Переводы строк разделяют элементы, а запятые внутри строки остаются обычным текстом.
|DEMPTYSTR|
DEMPTYSTR удаляет пустые строки и строки, состоящие только из пробельных знаков.
Результат:
Пробелы внутри непустой строки сохраняются. Например, строка red apple не разбивается и не изменяется.
|DUPDEL|
DUPDEL сортирует строки по возрастанию и удаляет точные повторы. Исходный порядок списка не сохраняется.
Результат:
Регистр учитывается: apple и Apple являются разными строками. Если порядок важен, не используйте DUPDEL как простое «оставить первое вхождение».
Удаление строк по списку исключений
FILTERLINES удаляет из SOURCE каждую строку, совпавшую хотя бы с одной строкой из списка STOP. Поля обязательны и располагаются только в указанном порядке.
| Поле | Допустимые значения | Действие |
|---|---|---|
MATCH | exact, contains | Полное совпадение строки или наличие указанной части |
CASE | sensitive, insensitive | Учитывать или не учитывать регистр |
EMPTYLINES | keep, drop | Сохранить или удалить строки нулевой длины до сравнения |
Самостоятельный пример:
Результат:
Строка spam из списка STOP удалит строку spam, но сохранит spam-score.
Строка spam из списка STOP удалит и spam, и spam-score.
EMPTYLINES применяется и к исходным строкам, и к списку STOP. Значение drop удаляет только строки нулевой длины; строка из пробелов остаётся. При сочетании contains, keep и пустой строки в STOP будут удалены все исходные строки, потому что пустая часть содержится в любой строке.
Значения и порядок полей строгие
Имена полей, варианты exact, contains, sensitive, insensitive, keep, drop и их регистр должны совпадать с примером. Пропущенное, переставленное или неизвестное поле завершает обработку явной ошибкой.
Сортировка строк
SORTLINES сортирует SOURCE как текст или как числа. Режим определяет точный набор полей.
В режиме lexical поле CASE обязательно:
Результат:
CASE принимает sensitive или insensitive. Сравнение выполняется по всей строке, а строки с одинаковым значением сохраняют взаимный исходный порядок.
DIRECTION принимает ascending или descending, а EMPTYLINES — keep или drop. При keep пустые строки идут первыми по возрастанию и последними по убыванию. Удаляются только строки нулевой длины; пробелы не считаются пустой строкой.
Набор полей зависит от режима
Для lexical после DIRECTION обязательно укажите CASE. Для numeric сразу укажите EMPTYLINES: добавление CASE является ошибкой. Все имена и допустимые значения чувствительны к регистру.
Случайная строка
RANDOM выбирает каждый знак из заданного набора и создаёт строку нужной длины. Между набором и диапазоном ставится дополнительная вертикальная черта:
Фиксированная длина задаётся одинаковыми границами:
Возможный результат — 3BAC1; каждый вызов может вернуть другое сочетание, а один знак может встретиться несколько раз.
Верхняя граница не входит в переменный диапазон
1-9 даёт длину от 1 до 8. Чтобы получить ровно пять знаков, используйте 5-5; чтобы получить от пяти до девяти, используйте 5-10. Первая граница должна быть не больше второй, а набор знаков не должен быть пустым.
Функция подходит для случайного выбора и вспомогательных значений, но её договор не обещает криптографическую стойкость. Не используйте результат как пароль, ключ шифрования или иной секрет, если безопасность зависит от непредсказуемости.
Повтор запроса
REPEAT ничего не повторяет внутри текста. Функция возвращает пустую строку и изменяет ход выполнения проекта.
(|REPEAT|local|REPEAT|) возвращает выполнение к текущему запросу. Эта форма действует только в обработке до или после его отправки.
(|REPEAT||REPEAT|) возвращает выполнение к началу всего запроса; его циклическая часть также начинается сначала.
Пример повтора конкретного запроса после ответа retry:
Пример полного повтора:
Слово local пишется ровно так, строчными буквами. Любой другой непустой текст запускает полный повтор, поэтому опечатка не является безопасной ошибкой.
Условие должно когда-нибудь стать ложным
Если повтор не меняет ответ, счётчик попыток или другое проверяемое состояние, проект может выполнять один запрос без конца. Ограничьте число повторов явным счётчиком и предусмотрите отдельную ветвь завершения.