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.

    Copy
    def rawText = ' 01234 Текст NN 0123456789 Текст'
    def text = api.string.findByRegExp(rawText, /NN \d+/) //ищем число с префиксом NN
    def finalText = api.string.findByRegExp(text, /\d+/) //ищем первое число

    Пример 2. Поиск в строке по регулярному выражению с использованием флагов:

    Copy
    api.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":

      • если в строке есть символы, то возвращаются все символы строки, кроме пробелов в начале строки;
      • если строка пустая, то выводится пустая строка.