Описание
Данный блок служит различным манипуляциям с текстом, которые в практике требуются очень часто. Обработать спарсенный текст, очистить его от мусора, перевести на другие языки – всё это, и многое другое, может «кубик» обработки текста.
Где применяется обработка текста?
Как пользоваться экшеном?
Окно свойств состоит в основном из трёх областей:
Входная строка – текст, переменная или их комбинация.
Действия над строкой, свойства и их настройки.
Выходная строка (результат) в переменной.
Установите курсор в области входной строки, нажмите 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. В ProjectMaker есть тестер JavaScript, где можно проверить (протестировать) код. Этот “кубик” поможет заэкранировать кавычки, апострофы и другие спецсимволы.
Было: <a href="https://zennolab.com/">
Стало: <a href=\"https://zennolab.com/\">
Подстрока
Берет из строки кусок текста заданный в свойствах экшена двумя индексами – от одного символа и до другого. Например, если взять первое предложение этого абзаца и есть задача получить подстроку в ней от 95 символа до конца текста, то получим “до другого.“ .
Транслитерация
Иногда всё ещё требуется perevesti кириллицу в латиницу. Этому действию и служит данный экшен.