Описание
Данный блок служит различным манипуляциям с текстом, которые в практике требуются очень часто. Обработать спарсенный текст, очистить его от мусора, перевести на другие языки – всё это, и многое другое, может «кубик» обработки текста.
Где применяется обработка текста?
Escape строки. Для экранирования специальных символов
Regex. Поиск текста регулярным выражением
Spintax. Рандомизировать, уникализировать текст
Split. Разделить строку на несколько других через разделитель
ToChar. Преобразовать Unicode код в символ
ToLower, ToUpper. Преобразовать заглавные буквы в строчные и наоборот
Trim. Очистить текст от лишних пробельных символов
UrlEncode, UrlDecode. Кодировать \ Декодировать URL
В переменную, список, таблицу. Положить данные в переменную, список или таблицу
Замена. Произвести замену в тексте
Перевод. Выполнить перевод на другой язык
Подготовка JavaScript. Обработать текст для использования в экшене Логики (IF-ELSE) или JavaScript
Транслитерация. Сделать транслитерацию текста
Как пользоваться экшеном?
Окно свойств состоит в основном из трёх областей:
Входная строка – текст, переменная или их комбинация.
Действия над строкой, свойства и их настройки.
Выходная строка (результат) в переменной.
Установите курсор в области входной строки, нажмите Ctrl+Пробел и выберите из выпадающего списка полезные константы и переменные проекта. Например, так можно быстро вставить прокси проекта {-Project.Proxy-} или URL активной вкладки {-Page.Url-}
Все возможные операции с этим «кубиком»:
Escape строки
Экранирование символов. Этот экшен заменяет символы *+?|{[()^$.#
и пробел escape-кодами. Этот метод часто используется для работы с запросами и для того чтобы обработчик регулярных выражений использовал эти символы буквально, а не как команды или метасимволы.
До применения: {"animal": "cat"}
После: \{"animal":\ "cat"}
Regex
Обработка текста регулярными выражениями. Регулярками очень удобно парсить строки для нахождения нужной подстроки по заданному паттерну. Данный экшен позволяет спарсить не только первое найденное значение, но и всю группу и сохранить значения в переменные или таблицу. Также, опционально, если ничего не найдено, результатом будет ошибка и выход по красной ветке. Всего имеется шесть вариантов сохранения результатов после обработки регулярным выражением:
сохраняется только первое найденное значение;
сохраняются все найденные соответствия в список;
сохраняется одно значение, но или последнее или случайное;
сохраняются одно или несколько значений в список, но определенного индекса (порядковому номеру в списке найденных значений). Индексы можно перечислить через запятую (4,5,9), задать интервал через дефис (4-9) или комбинацией вышеуказанных способов (4,5, 9-11);
тоже самое что в предыдущем пункте, но без списка, а значение каждого найденного индекса можно положить в свою переменную;
совпадения сохраняются в таблицу.
Для создания паттернов регулярных выражений в ZennoPoster предусмотрен очень удобный инструмент – Конструктор регулярных выражений.
Рассмотрим на конкретном примере парсинг ссылок регулярными выражениями, составленными с помощью этого конструктора.
Например, у нас есть задача - спарсить ссылки на профили активных пользователей форума ZennoLab. Приступаем:
С помощью кубика “Получение значения” получаем HTML код элемента в котором размещены ссылки на пользователей находящихся на форуме онлайн.
Добавляем экшен “Regex”. Для составления паттерна, используемого в свойствах экшена “Regex”, используем Конструктор регулярных выражений.
В свойствах экшена на вход добавляем переменную “html“, а результат сохраняем в список “urls“.
После запуска кубика получаем в списке уникальные id, которые можно использовать для формирования URL профилей юзеров.
Spintax
Рандомизация или уникализация текста. С помощью spintax удобно создавать синонимизацию текстов. Спинтакс - это такая конструкция из обрамляющих фигурных скобок и вертикальных слэшей, которая позволяет в случайном порядке подставлять подстроки из строки. В простейшем варианте спинтакс выглядит так: {вариант1|вариант2|вариант3}
. При выполнении этого действия в результирующую переменную случайно попадет один из трёх вариантов. Но конструкции спинтакса бывают более сложными и обладают многоуровневой вложенностью из-за чего из одного текста можно получить тысячи разных вариантов.
Также Spintax в ZennoPoster поддерживает расширенный синтаксис:
{Red|White|Blue}
— в результирующий текст попадает одно из значений, например: «White»[ Red| White| Blue]
— в результирующий текст попадает перестановка значений, например: «White Blue Red»[+_+Red|White|Blue]
— в результирующий текст попадает перестановка значений, между которыми вставлен разделитель, например: «White_Red_Blue»
Вложенность шаблонов неограниченна (например: [+{_|-}+Red|White|Blue {1|2}]
= «White-Blue 2-Red»). Спец.символы можно экранировать: [+\++Red|\[White\]|Blue]
- результат «[White]+Red+Blue»
Split
Разделение текста каким-либо символом-разделителем (делиметером). Эта обработка превращает строку в массив строк. По сути это более простой аналог RegExp для разделения строки символами.
Рассмотрим работу сплита на примере очень частой задачи – получение из строки логина и пароля. Обычно доступы к различным аккаунтам хранятся в виде построчных списков в формате - логин:пароль
. И тут делиметором является символ двоеточия :
Вставляем в входное поле нашу строку или переменную её содержащую. В свойствах указываем разделитель - :
, а ниже присваиваем каждому элементу полученного массива подстрок отдельную переменную. После обработки строки мы получаем в каждой переменной логин и пароль.
Также нередко используемый функционал – это разбор строки прокси с авторизацией по паролю. Строка прокси в ZennoPoster имеет формат: логин:пароль@хост:порт
. Для получения например IP прокси придется использовать «кубик» дважды. Сначала делим строку прокси с помощью разделителя @
на две подстроки и вторую заносим во временную переменную. Затем вторую подстроку делим с помощью разделителя :
и берем первую подстроку, которая и будет являться нашим искомым IP прокси.
ToChar
Преобразует значение целого числа в символы Unicode.
Каждый символ Юникод имеет свой цифровой код и этот функционал позволяет конвертировать числовое значение в соответствующие символы. Например у символа ♛
числовое значение 9819
ToLower
Меняет регистр букв на нижний в зависимости от выбранного свойства: либо все буквы, либо только первую букву строки, либо первую букву в каждом слове.
Например нас ОЧЕНЬ РАЗДРАЖАЕТ НАПИСАНИЕ CAPS LOCKОМ. Пропускаем текст через этот макрос и получаем нормальное написание.
ToUpper
Обратное действие предыдущего. Меняет регистр букв в верхний: либо все буквы, либо только первую букву строки, либо первую букву в каждом слове.
Например, нам нужно Чтобы Все Слова В Заголовке Начались С Заглавных Букв (частый приём на иностранных ресурсах) - используем этот “кубик” в режиме “Первая буква в каждом слове“.
Trim
Это обрезка лишних символов в строке. В основном используется, если нужно почистить строку от лишних пробелов, переносов строк, табуляций, которые так часто остаются в результате парсинга. При этом чистить можно с начала строки, с конца и одновременно. Кроме того, обрезать можно и свои символы, например частая задача - удалить точки в заголовках.
Было: какой-то текст
(пробелы в начале и в конце)
Стало: какой-то текст
UrlDecode
Декодирует URL-закодированную строку.
Если такие символы, как пробелы и знаки препинания, передаются в HTTP-запросе, то они могут быть неверно интерпретированы в принимающей стороне. Поэтому данный макрос обязательно используется при формировании URL-запросов.
Наиболее наглядно этот экшен выглядит при раскодировании кириллицы:
Было: %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%2C%20%D0%BC%D0%B8%D1%80%21
Стало: Привет, мир!
UrlEncode
Функция обратная предыдущей. Кодирует строку URL-адреса. Часто используется для HTTP-запросов.
Было: https://zennolab.com/
Стало: https%3a%2f%2fzennolab.com%2f
В переменную
Это действие просто сохраняет всё что вы добавите во входное окно – переменные, текст, символы, константы проекта, в отдельную переменную.
В список
Данный экшен разбивает текст с помощью указанного в свойствах разделителя на строки и записывает их в список.
В таблицу
Примерно тоже самое что и в предыдущем экшене, но сохраняет данные в таблице. Естественно, в данном случае необходимо указать разделители не только для строк, но и для столбцов. Например для таблиц в формате Excel нужно указывать разделителем столбцов свой символ и ввести в поле рядом {-String.Tab-}
Замена
Это действие ищет в строке подстроку, заменяет её на другую и затем сохраняет результат в переменную. Вроде бы всё просто, но благодаря возможности использования регулярных выражений потенциал этого экшена сильно расширяется. Также как и в других действиях можно заменять не только первое найденное совпадение, но все или заданные индексы (перечисленные через запятую или диапазон заданный дефисом).
Перевод
Переводит строки с одного языка на другой.
В экшене перевода имеется большой выбор сервисов перевода, что поможет гибко подходить к уникализации текстов выбирая наиболее качественные текста.
Доступны следующие API:
Кроме выбора API, которое будет переводить, важно указать язык оригинала и итогового перевода. Вот несколько примеров: английский – en, испанский – es, немецкий – de, русский – ru (полный список)
Можно указать язык “auto” и тогда система попробует определить язык перевода сама, но результат не гарантируется.
Дополнительными параметрами можно значительно расширить возможности этого «кубика», но они у каждого API свои собственные. Например, передачей ключа API можно добиться более стабильной работы переводчика.
Ключи API для сервисов можно добавить в настройках ZennoPoster.
Подготовка JavaScript
Обрабатывает строку для корректного использования в JavaScript. В основном экранирует кавычки и другие спец. символы. Этот макрос подготавливает текст, чтобы его можно было вставить в качестве строки в экшен JavaScript или IF. В ProjectMaker есть тестер JavaScript, где можно проверить (протестировать) код. Этот “кубик” поможет заэкранировать кавычки, апострофы и другие спецсимволы.
Было: <a href="https://zennolab.com/">
Стало: <a href=\"https://zennolab.com/\">
Подстрока
Берет из строки кусок текста заданный в свойствах экшена двумя индексами – от одного символа и до другого. Например, если взять первое предложение этого абзаца и есть задача получить подстроку в ней от 95 символа до конца текста, то получим “до другого.“ .
Транслитерация
Иногда всё ещё требуется perevesti кириллицу в латиницу. Этому действию и служит данный экшен.