api.string Утилитарные методы для работы со строками
Для работы со строками рекомендуется использовать возможности языка groovy.
Преобразования строки
-
api.string.concat(separator, strs)
Соединяет непустые строки через разделитель.
Параметры метода:
- separator — разделитель;
- strs — коллекция строк
Пример:
api.string.concat(", ", ["a", "", "c", "d", null]) == "a, c, d"
-
api.string.trim(str)
Удаляет пробелы (непечатаемые символы) в начале и конце строк. Непечатаемыми считаются символы с кодом меньшим или равным 'U+0020', в соответствии документацией Java метода trim().
Параметр метода:
- str — строка
Примеры:
api.string.trim(" abc ") == "abc"
api.string.trim([" a ", "b", "c ", " d"]) == ["a", "b", "c", "d"]
api.string.trim(null) == null
-
api.string.replace(str, from, to)
Заменяет части строки.
Параметры метода:
- str — строка
- from — заменяемая часть строки
- to — новая часть строки
Примеры:
api.string.replace("Маша ела раму", "ела", "съела") == "Маша съела раму"
api.string.replace(null, "ела", "съела") == null
-
api.string.htmlToText(html)
Преобразует HTML в текст согласно следующим правилам:
- html-теги удаляются;
- специальные символы заменяются на специальные теги: "<" → "<", "\"" → """, "&" → "&", ">" → ">";
- тег <br> интерпретируется как перевод строки
-
api.string.toMap(str, pairDelimiter, keyValueDelimiter)
Используется для обработки автоматически сформированных писем, в которых в теме или теле содержатся значения заранее известных атрибутов, разделенные спецсимволом.
Параметры метода:
- str — исходная строка
- pairDelimiter — разделитель пары. String
- keyValueDelimiter — разделитель ключа и значения. String
Возвращает список, где каждая пара атрибутов отделена друг от друга разделителем pairDelimiter, а ключ и значение отделены друг от друга разделителем keyValueDelimiter
Получение части строки
-
api.string.getDomain(email)
Получение домена из email-адреса.
Параметр метода:
- email — email-адрес. String
Возвращает подстроку строки email с первого символа после символа "@" до конца строки или пустую строку, если символ "@" не найден.
-
api.string.getMailbox(email)
Получение почтового ящика из email-адреса.
Параметр метода:
- email — email-адрес. String
Возвращает подстроку строки email с первого символа до символа "@" или всю строку, если символ "@" не найден.
-
api.string.getFileExtension(filename)
Получение расширения по имени файла.
Параметр метода:
- email — filename — имя файла. String
Возвращает подстроку строки filename после последнего символа "." до конца строки или пустую строку, если символ "." не найден.
-
api.string.getFileName(filename)
Получение собственного имени файла (без расширения).
Параметр метода:
- filename — имя файла. String
Возвращает подстроку строки filename с первого символа до последнего символа "." (исключительно) или всю строку filename, если символ "." не найден.
-
api.string.getTextBeforeDelimiterAsHtml(htmlBody, delimiter)
Получение фрагмента html документа до разделителя.
Параметры метода:
- htmlBody — параметр htmlBody. String;
- delimiter — разделитель. String
Возвращает:
- Валидный html — часть параметра htmlBody, находящаяся до разделителя delimiter;
- Весь htmlBody, если разделитель не найден;
- Пустая строка, если параметр htmlBody - null или пустая строка
-
api.string.notEmpty(strs)
Возвращает непустые строки коллекции.
Параметр метода:
- strs — коллекция строк
Примеры:
api.string.notEmpty(["a", "", "b", "c"]) == ["a", "b", "c"]
api.string.notEmpty(null) == null
Проверки строк
-
api.string.isEmpty(str)
Проверяет строку на пустоту.
Параметр метода:
- str — проверяемая строка
Возвращает:
- true — если строка null или не содержит ни одного символа,
- false — в остальных случаях.
Примеры:
api.string.isEmpty("") == true
api.string.isEmpty(null) == true
api.string.isEmpty("hgsdaj") == false
-
api.string.isEmptyTrim(str)
Проверяет строку на пустоту.
Параметры метода:
- str — проверяемая строка
Возвращает:
- true — если строка null, не содержит ни одного символа или состоит из одних непечатаемых символов (непечатаемыми считаются символы с кодом меньшим или равным 'U+0020', в соответствии документацией Java метода trim());
- false — в остальных случаях.
Примеры:
api.string.isEmptyTrim("") == true
api.string.isEmptyTrim(null) == true
api.string.isEmptyTrim(" ") == true
api.string.isEmptyTrim("hgsdaj") == false
-
api.string.contains(str, s)
Проверяет наличие подстроки в строке.
Параметры метода:
- str — строка;
- s — проверяемая подстрока
Примеры:
api.string.contains("Маша ела кашу", "ела") == true
api.string.contains("Маша ела кашу", "съела") == false
api.string.contains(null, "съела") == false
-
api.string.containsAnyFromCollection(str, substrCollection)
Проверяет наличие в строке хотя бы одной строки из коллекции.
Параметры метода:
- str — строка;
- substrCollection — коллекция строк
Возвращает:
- true — строка str содержит в качестве подстроки хотя бы одну строку из substrCollection;
- false — в остальных случаях
Примеры:
api.string.containsAnyFromCollection("str", ["qwe", "rty", "str"]) == true
api.string.containsAnyFromCollection("str", ["qwe", "rty", "zxc"]) == false
-
api.string.containsAnyFromCollectionIc(str, substrCollection)
Проверяет наличие в строке хотя бы одной строки из коллекции без учета регистра.
Параметры метода:
- str — строка;
- substrCollection — коллекция строк
Возвращает:
- true — строка str содержит в качестве подстроки хотя бы одну строку из substrCollection;
- false — в остальных случаях
Примеры:
api.string.containsAnyFromCollectionIc("str", ["qWe", "Rty", "Str"]) = true
Поиск числа или слова в строке
-
api.string.findByRegExp(str, regexp)
api.string.findByRegExp(str, regexp, flags)
Поиск регулярного выражения в строке (поиск в строке первой подстроки, соответствующей регулярному выражению).
Параметры метода:
-
str — строка, в которой производится поиск;
-
regexp — строка искомого регулярного выражения (например, "# (\d\d-\d\d-\d\d)");
-
flags — строка флагов, определяющих способ сопоставления с регулярным выражением regexp, необязательный параметр.
Примеры флагов:
- (?i) — сопоставление без учета регистра;
- (?m) — многострочный режим.
Полный список возможных флагов приведен в документации Oracle (раздел "Embedded Flag Expressions").
Возвращает строку-результат поиска:
- Первая подстрока строки str, соответствующую регулярному выражению regexp.
- Первая подстрока строки str, соответствующую регулярному выражению regexp с флагами flags.
- null, если соответствий регулярному выражению regexp не найдено.
Пример 1. Поиск в строке по регулярному выражению:
В теле письма может присутствовать код заявки с префиксом NN. Необходимо в теле письма найти номер, например, NN 0123456789.
Copydef rawText = ' 01234 Текст NN 0123456789 Текст'
def text = api.string.findByRegExp(rawText, /NN \d+/) //ищем число с префиксом NN
def finalText = api.string.findByRegExp(text, /\d+/) //ищем первое числоПример 2. Поиск в строке по регулярному выражению с использованием флагов:
Copyapi.string.findByRegExp('Script with some strings', "script", "(?i)")
-
-
api.string.find(str, prefix, format)
Поиск числа, слова, подстроки в строке после префикса. Вместо этого метода рекомендуется использовать метод api.string.findByRegExp.
Параметры метода:
- str — строка, в которой производится поиск;
- prefix — строка, которая предшествует искомому значению;
- format — элемент списка "number", "word", "string"
Возвращает строку-результат поиска (при поиске учитывается регистра префикса).
Если префикс в строке найден, то:
- format = "number": первое число, найденное в строке str, идущее после строки-префикса prefix
- format = "word": первое слово (т.е. подстрока из цифр и букв), найденное в строке str, идущее после строки-префикса prefix
- format = "string": подстрока строки str, начиная с первого символа после строки-префикса prefix и null, если ничего не найдено
Если префикс в строке не найден, то:
-
format = "number":
- если в строке есть числа, то выводится первое число;
- если в строке чисел нет, то выводится пустая строка.
-
format = "word":
- если в строке есть слова/числа, то выводится первое слово/число;
- если в строке слов/чисел нет, то выводится пустая строка.
-
format = "string":
- если в строке есть символы, то возвращаются все символы строки, кроме пробелов в начале строки;
- если строка пустая, то выводится пустая строка.