Перейти к основному содержимому
Перейти к основному содержимому

Функции для работы со строками

Функции для поиска в строках и для замены в строках описаны отдельно.

empty

Проверяет, является ли входная строка пустой. Строка считается непустой, если она содержит хотя бы один байт, даже если этот байт является пробелом или нулевым байтом.

Функция также доступна для массивов и UUID-ов.

Синтаксис

Аргументы

Возвращаемое значение

  • Возвращает 1 для пустой строки или 0 для непустой строки. UInt8.

Пример

Результат:

notEmpty

Проверяет, является ли входная строка непустой. Строка считается непустой, если она содержит хотя бы один байт, даже если этот байт является пробелом или нулевым байтом.

Функция также доступна для массивов и UUID-ов.

Синтаксис

Аргументы

Возвращаемое значение

  • Возвращает 1 для непустой строки или 0 для пустой строки. UInt8.

Пример

Результат:

length

Возвращает длину строки в байтах, а не в символах или кодовых точках Unicode. Функция также работает для массивов.

Псевдоним: OCTET_LENGTH

Синтаксис

Параметры

Возвращаемое значение

  • Длина строки или массива s в байтах. UInt64.

Пример

Запрос:

Результат:

Запрос:

Результат:

lengthUTF8

Возвращает длину строки в кодовых точках Unicode, а не в байтах или символах. Предполагается, что строка содержит допустимый текст в кодировке UTF-8. Если это предположение нарушается, исключение не выбрасывается, и результат неопределен.

Псевдонимы:

  • CHAR_LENGTH
  • CHARACTER_LENGTH

Синтаксис

Параметры

  • s — Строка, содержащая допустимый текст в кодировке UTF-8. Строка.

Возвращаемое значение

  • Длина строки s в кодовых точках Unicode. UInt64.

Пример

Запрос:

Результат:

left

Возвращает подстроку строки s с указанным offset, начиная с левой стороны.

Синтаксис

Параметры

  • s — Строка, из которой нужно извлечь подстроку. Строка или FixedString.
  • offset — Количество байт смещения. (U)Int*.

Возвращаемое значение

  • Для положительного offset: Подстрока s длиной offset байт, начиная с левой стороны строки.
  • Для отрицательного offset: Подстрока s длиной length(s) - |offset| байт, начиная с левой стороны строки.
  • Пустая строка, если length равна 0.

Пример

Запрос:

Результат:

Запрос:

Результат:

leftUTF8

Возвращает подстроку UTF-8 кодированной строки s с указанным offset, начиная с левой стороны.

Синтаксис

Параметры

  • s — UTF-8 кодированная строка, из которой нужно извлечь подстроку. Строка или FixedString.
  • offset — Количество байт смещения. (U)Int*.

Возвращаемое значение

  • Для положительного offset: Подстрока s длиной offset байт, начиная с левой стороны строки.
  • Для отрицательного offset: Подстрока s длиной length(s) - |offset| байт, начиная с левой стороны строки.
  • Пустая строка, если length равна 0.

Пример

Запрос:

Результат:

Запрос:

Результат:

leftPad

Дополняет строку слева пробелами или указанной строкой (несколько раз, если это необходимо) до тех пор, пока результирующая строка не достигнет указанной длины.

Синтаксис

Псевдоним: LPAD

Аргументы

  • string — Входная строка, которую нужно дополнить. Строка.
  • length — Длина результирующей строки. UInt или Int. Если значение меньше длины входной строки, то входная строка обрезается до length символов.
  • pad_string — Строка, которой нужно дополнить входную строку. Строка. Необязательно. Если не указана, строка дополняется пробелами.

Возвращаемое значение

  • Строка, дополненная слева до указанной длины. Строка.

Пример

Результат:

leftPadUTF8

Дополняет строку слева пробелами или указанной строкой (несколько раз, если это необходимо) до тех пор, пока результирующая строка не достигнет заданной длины. В отличие от leftPad, которая измеряет длину строки в байтах, длина строки измеряется в кодовых точках.

Синтаксис

Аргументы

  • string — Входная строка, которую нужно дополнить. Строка.
  • length — Длина результирующей строки. UInt или Int. Если значение меньше длины входной строки, то входная строка обрезается до length символов.
  • pad_string — Строка, которой нужно дополнить входную строку. Строка. Необязательно. Если не указана, строка дополняется пробелами.

Возвращаемое значение

  • Строка, дополненная слева до указанной длины. Строка.

Пример

Результат:

Возвращает подстроку строки s с указанным offset, начиная с правой стороны.

Синтаксис

Параметры

  • s — Строка, из которой нужно извлечь подстроку. Строка или FixedString.
  • offset — Количество байт смещения. (U)Int*.

Возвращаемое значение

  • Для положительного offset: Подстрока s длиной offset байт, начиная с правой стороны строки.
  • Для отрицательного offset: Подстрока s длиной length(s) - |offset| байт, начиная с правой стороны строки.
  • Пустая строка, если length равна 0.

Пример

Запрос:

Результат:

Запрос:

Результат:

rightUTF8

Возвращает подстроку UTF-8 кодированной строки s с указанным offset, начиная с правой стороны.

Синтаксис

Параметры

  • s — UTF-8 кодированная строка, из которой нужно извлечь подстроку. Строка или FixedString.
  • offset — Количество байт смещения. (U)Int*.

Возвращаемое значение

  • Для положительного offset: Подстрока s длиной offset байт, начиная с правой стороны строки.
  • Для отрицательного offset: Подстрока s длиной length(s) - |offset| байт, начиная с правой стороны строки.
  • Пустая строка, если length равна 0.

Пример

Запрос:

Результат:

Запрос:

Результат:

rightPad

Дополняет строку справа пробелами или указанной строкой (несколько раз, если это необходимо) до тех пор, пока результирующая строка не достигнет указанной длины.

Синтаксис

Псевдоним: RPAD

Аргументы

  • string — Входная строка, которую нужно дополнить. Строка.
  • length — Длина результирующей строки. UInt или Int. Если значение меньше длины входной строки, то входная строка обрезается до length символов.
  • pad_string — Строка, которой нужно дополнить входную строку. Строка. Необязательно. Если не указана, строка дополняется пробелами.

Возвращаемое значение

  • Строка, дополненная справа до указанной длины. Строка.

Пример

Результат:

rightPadUTF8

Дополняет строку справа пробелами или указанной строкой (несколько раз, если это необходимо) до тех пор, пока результирующая строка не достигнет заданной длины. В отличие от rightPad, которая измеряет длину строки в байтах, длина строки измеряется в кодовых точках.

Синтаксис

Аргументы

  • string — Входная строка, которую нужно дополнить. Строка.
  • length — Длина результирующей строки. UInt или Int. Если значение меньше длины входной строки, то входная строка обрезается до length символов.
  • pad_string — Строка, которой нужно дополнить входную строку. Строка. Необязательно. Если не указана, строка дополняется пробелами.

Возвращаемое значение

  • Строка, дополненная справа до указанной длины. Строка.

Пример

Результат:

compareSubstrings

Сравнивает две строки лексикографически.

Синтаксис

Аргументы

  • string1 — Первая строка для сравнения. Строка
  • string2 - Вторая строка для сравнения. Строка
  • string1_offset — Позиция (индекс, начиная с нуля) в string1, с которой начинается сравнение. UInt*.
  • string2_offset — Позиция (индекс, начиная с нуля) в string2, с которой начинается сравнение. UInt*.
  • num_bytes — Максимальное количество байт, которое нужно сравнить в обеих строках. Если string_offset + num_bytes превышает конец входной строки, то num_bytes будет уменьшен соответственно. UInt*.

Возвращаемое значение

  • -1 — Если string1[string1_offset : string1_offset + num_bytes] < string2[string2_offset : string2_offset + num_bytes].
  • 0 — Если string1[string1_offset : string1_offset + num_bytes] = string2[string2_offset : string2_offset + num_bytes].
  • 1 — Если string1[string1_offset : string1_offset + num_bytes] > string2[string2_offset : string2_offset + num_bytes].

Пример

Запрос:

Результат:

lower

Преобразует символы латиницы ASCII в строке в строчные буквы.

Синтаксис

Псевдоним: lcase

Параметры

Возвращаемое значение

Пример

Запрос:

upper

Преобразует символы латиницы ASCII в строке в заглавные буквы.

Синтаксис

Псевдоним: ucase

Параметры

Возвращаемое значение

Примеры

Запрос:

lowerUTF8

Преобразует строку в строчные буквы, предполагая, что строка содержит допустимый текст в кодировке UTF-8. Если это предположение нарушается, исключение не выбрасывается, и результат неопределен.

примечание

Не распознает язык, например, для турецкого результат может быть не совсем корректным (i/İ против i/I). Если длина байтовой последовательности UTF-8 различна для заглавных и строчных букв кодовой точки (например, и ß), результат может быть некорректным для этой кодовой точки.

Синтаксис

Параметры

Возвращаемое значение

Пример

Запрос:

Результат:

upperUTF8

Преобразует строку в заглавные буквы, предполагая, что строка содержит допустимый текст в кодировке UTF-8. Если это предположение нарушается, исключение не выбрасывается, и результат неопределен.

примечание

Не распознает язык, например, для турецкого результат может быть не совсем корректным (i/İ против i/I). Если длина байтовой последовательности UTF-8 различна для заглавных и строчных букв кодовой точки (например, и ß), результат может быть некорректным для этой кодовой точки.

Синтаксис

Параметры

Возвращаемое значение

Пример

Запрос:

Результат:

isValidUTF8

Возвращает 1, если набор байтов является допустимым текстом в кодировке UTF-8, в противном случае 0.

Синтаксис

Параметры

Возвращаемое значение

  • Возвращает 1, если набор байтов является допустимым текстом в кодировке UTF-8, в противном случае 0.

Запрос:

Результат:

toValidUTF8

Заменяет недопустимые символы UTF-8 на символ (U+FFFD). Все идущие подряд недопустимые символы сжимаются в один символ замены.

Синтаксис

Аргументы

  • input_string — Любой набор байтов, представленный в виде объекта типа Строка.

Возвращаемое значение

  • Допустимая строка в кодировке UTF-8.

Пример

repeat

Конкатенирует строку столько раз, сколько указано.

Синтаксис

Псевдоним: REPEAT

Аргументы

  • s — Строка, которую нужно повторить. Строка.
  • n — Количество повторений строки. UInt* или Int*.

Возвращаемое значение

Строка, содержащая строку s, повторяющуюся n раз. Если n <= 0, функция возвращает пустую строку. Строка.

Пример

Результат:

space

Конкатенирует пробел ( ) столько раз, сколько указано.

Синтаксис

Псевдоним: SPACE.

Аргументы

Возвращаемое значение

Строка, содержащая строку , повторяющуюся n раз. Если n <= 0, функция возвращает пустую строку. Строка.

Пример

Запрос:

Результат:

reverse

Обращает последовательность байтов в строке.

reverseUTF8

Обращает последовательность кодовых точек Unicode в строке. Предполагается, что строка содержит допустимый текст в кодировке UTF-8. Если это предположение нарушается, исключение не выбрасывается, и результат неопределен.

concat

Конкатенирует заданные аргументы.

Синтаксис

Аргументы

Значения произвольного типа.

Аргументы, которые не являются типами Строка или FixedString, конвертируются в строки с использованием их стандартной сериализации. Поскольку это снижает производительность, не рекомендуется использовать аргументы, отличные от String/FixedString.

Возвращаемые значения

Строка, созданная путем конкатенации аргументов.

Если любое из аргументов равно NULL, функция возвращает NULL.

Пример

Запрос:

Результат:

Запрос:

Результат:

примечание
|| оператор

Используйте оператор || для конкатенации строк в качестве краткой альтернативы concat(). Например, 'Hello, ' || 'World!' эквивалентно concat('Hello, ', 'World!').

concatAssumeInjective

Как concat, но предполагает, что concat(s1, s2, ...) → sn является инъективным. Может быть использован для оптимизации GROUP BY.

Функция называется инъективной, если для разных аргументов она возвращает разные результаты. Другими словами: разные аргументы никогда не производят одинаковый результат.

Синтаксис

Аргументы

Значения типа String или FixedString.

Возвращаемые значения

Строка, созданная путем конкатенации аргументов.

Если любое из значений аргументов равно NULL, функция возвращает NULL.

Пример

Входная таблица:

Результат:

concatWithSeparator

Конкатенирует заданные строки с заданным разделителем.

Синтаксис

Псевдоним: concat_ws

Аргументы

  • sep — разделитель. Константный Строка или FixedString.
  • exprN — выражение, которое необходимо конкатенировать. Аргументы, которые не являются типами Строка или FixedString, конвертируются в строки с использованием их стандартной сериализации. Поскольку это снижает производительность, не рекомендуется использовать аргументы, отличные от String/FixedString.

Возвращаемые значения

Строка, созданная путем конкатенации аргументов.

Если любое из значений аргументов равно NULL, функция возвращает NULL.

Пример

Результат:

concatWithSeparatorAssumeInjective

Как concatWithSeparator, но предполагает, что concatWithSeparator(sep, expr1, expr2, expr3...) → result является инъективным. Может быть использован для оптимизации GROUP BY.

Функция называется инъективной, если для разных аргументов она возвращает разные результаты. Другими словами: разные аргументы никогда не производят одинаковый результат.

substring

Возвращает подстроку строки s, которая начинается с указанного индекса байта offset. Число байтов начинается с 1. Если offset равен 0, возвращается пустая строка. Если offset отрицательный, подстрока начинается с pos символов от конца строки, а не с начала. Дополнительным аргументом length задается максимальное количество байтов, которые может иметь возвращаемая подстрока.

Синтаксис

Псевдонимы:

  • substr
  • mid
  • byteSlice

Аргументы

  • s — Строка, из которой нужно извлечь подстроку. Строка, FixedString или Enum
  • offset — Начальная позиция подстроки в s. (U)Int*.
  • length — Максимальная длина подстроки. (U)Int*. Необязательно.

Возвращаемое значение

Подстрока s длиной length байт, начиная с индекса offset. Строка.

Пример

Результат:

substringUTF8

Возвращает подстроку строки s, которая начинается с указанного индекса байта offset для кодовых точек Unicode. Число байтов начинается с 1. Если offset равно 0, возвращается пустая строка. Если offset отрицательный, подстрока начинается с pos символов от конца строки, а не с начала. Дополнительным аргументом length задается максимальное количество байтов, которые может иметь возвращаемая подстрока.

Предполагается, что строка содержит допустимый текст в кодировке UTF-8. Если это предположение нарушается, исключение не выбрасывается, и результат неопределен.

Синтаксис

Аргументы

  • s — Строка, из которой нужно извлечь подстроку. Строка, FixedString или Enum
  • offset — Начальная позиция подстроки в s. (U)Int*.
  • length — Максимальная длина подстроки. (U)Int*. Необязательно.

Возвращаемое значение

Подстрока s длиной length байт, начиная с индекса offset.

Подробности реализации

Предполагается, что строка содержит допустимый текст в кодировке UTF-8. Если это предположение нарушается, исключение не выбрасывается, и результат неопределен.

Пример

substringIndex

Возвращает подстроку s до count вхождений разделителя delim, как в Spark или MySQL.

Синтаксис

Псевдоним: SUBSTRING_INDEX

Аргументы

  • s — Строка, из которой нужно извлечь подстроку. Строка.
  • delim — Символ-разделитель. Строка.
  • count — Количество вхождений разделителя, которые нужно подсчитать перед извлечением подстроки. Если count положительное, возвращается всё слева от последнего разделителя (считается слева). Если count отрицательное, возвращается всё справа от последнего разделителя (считается справа). UInt или Int

Пример

Результат:

substringIndexUTF8

Возвращает подстроку s до count вхождений разделителя delim, конкретно для кодовых точек Unicode.

Предполагается, что строка содержит допустимый текст в кодировке UTF-8. Если это предположение нарушается, исключение не выбрасывается, и результат неопределен.

Синтаксис

Аргументы

  • s — Строка, из которой нужно извлечь подстроку. Строка.
  • delim — Символ-разделитель. Строка.
  • count — Количество вхождений разделителя, которые нужно подсчитать перед извлечением подстроки. Если count положительное, возвращается всё слева от последнего разделителя (считается слева). Если count отрицательное, возвращается всё справа от последнего разделителя (считается справа). UInt или Int

Возвращаемое значение

Подстрока Строка s до count вхождений delim.

Подробности реализации

Предполагается, что строка содержит допустимый текст в кодировке UTF-8. Если это предположение нарушается, исключение не выбрасывается, и результат неопределен.

Пример

appendTrailingCharIfAbsent

Добавляет символ c к строке s, если s непустая и не заканчивается символом c.

Синтаксис

convertCharset

Возвращает строку s, преобразованную из кодировки from в кодировку to.

Синтаксис

base58Encode

Кодирует строку с использованием Base58 в алфавите "Bitcoin".

Синтаксис

Аргументы

Возвращаемое значение

  • Строка, содержащая закодированное значение аргумента. Строка или FixedString.

Пример

Результат:

base58Decode

Принимает строку и декодирует её с использованием кодировки Base58 с использованием алфавита "Bitcoin".

Синтаксис

Аргументы

  • encodedСтрока или FixedString. Если строка не является допустимым значением, закодированным в Base58, будет выброшено исключение.

Возвращаемое значение

  • Строка, содержащая декодированное значение аргумента. Строка.

Пример

Результат:

tryBase58Decode

Как base58Decode, но возвращает пустую строку в случае ошибки.

Синтаксис

Параметры

  • encoded: Строка или FixedString. Если строка не является допустимым значением, закодированным в Base58, возвращает пустую строку в случае ошибки.

Возвращаемое значение

  • Строка, содержащая декодированное значение аргумента.

Примеры

Запрос:

base64Encode

Кодирует строку или фиксированную строку как base64 в соответствии с RFC 4648.

Псевдоним: TO_BASE64.

Синтаксис

Аргументы

Возвращаемое значение

  • Строка, содержащая закодированное значение аргумента.

Пример

Результат:

base64URLEncode

Кодирует URL (String или FixedString) в base64 с модификациями, специфичными для URL, в соответствии с RFC 4648.

Синтаксис

Аргументы

  • urlString столбец или константа.

Возвращаемое значение

  • Строка, содержащая закодированное значение аргумента.

Пример

Результат:

base64Decode

Принимает строку и декодирует её из base64, в соответствии с RFC 4648. Вызывает исключение в случае ошибки.

Псевдоним: FROM_BASE64.

Синтаксис

Аргументы

  • encodedString столбец или константа. Если строка не является допустимым значением, закодированным в Base64, возникает исключение.

Возвращаемое значение

  • Строка, содержащая декодированное значение аргумента.

Пример

Результат:

base64URLDecode

Принимает URL, закодированный в base64, и декодирует его из base64 с модификациями, специфичными для URL, в соответствии с RFC 4648. Вызывает исключение в случае ошибки.

Синтаксис

Аргументы

  • encodedURLString столбец или константа. Если строка не является допустимым значением, закодированным в Base64 с модификациями для URL, возникает исключение.

Возвращаемое значение

  • Строка, содержащая декодированное значение аргумента.

Пример

Результат:

tryBase64Decode

Как base64Decode, но возвращает пустую строку в случае ошибки.

Синтаксис

Аргументы

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

Возвращаемое значение

  • Строка, содержащая декодированное значение аргумента.

Примеры

Запрос:

tryBase64URLDecode

Как base64URLDecode, но возвращает пустую строку в случае ошибки.

Синтаксис

Параметры

  • encodedURLString столбец или константа. Если строка не является допустимым значением, закодированным в Base64 с модификациями для URL, возвращает пустую строку.

Возвращаемое значение

  • Строка, содержащая декодированное значение аргумента.

Примеры

Запрос:

endsWith

Возвращает, заканчивается ли строка str на suffix.

Синтаксис

endsWithUTF8

Возвращает, заканчивается ли строка str на suffix, разница между endsWithUTF8 и endsWith заключается в том, что endsWithUTF8 сопоставляет str и suffix по символам UTF-8.

Синтаксис

Пример

Результат:

startsWith

Возвращает, начинается ли строка str на prefix.

Синтаксис

Пример

startsWithUTF8

Available in version 23.8 and later

Возвращает, начинается ли строка str на prefix, разница между startsWithUTF8 и startsWith заключается в том, что startsWithUTF8 сопоставляет str и suffix по символам UTF-8.

Пример

Результат:

trim

Удаляет указанные символы с начала или конца строки. Если не указано иное, функция удаляет пробелы (ASCII-символ 32).

Синтаксис

Аргументы

  • trim_character — Символы для обрезки. String.
  • input_string — Строка для обрезки. String.

Возвращаемое значение

Строка без начальных и/или конечных указанных символов. String.

Пример

Результат:

trimLeft

Удаляет последовательные вхождения пробелов (ASCII-символ 32) с начала строки.

Синтаксис

Псевдоним: ltrim.

Аргументы

  • input_string — Строка для обрезки. String.
  • trim_characters — Символы для обрезки. Необязательный. String. Если не указано, используется ' ' (одинарный пробел) в качестве символа обрезки.

Возвращаемое значение

Строка без начальных общих пробелов. String.

Пример

Результат:

trimRight

Удаляет последовательные вхождения пробелов (ASCII-символ 32) с конца строки.

Синтаксис

Псевдоним: rtrim.

Аргументы

  • input_string — Строка для обрезки. String.
  • trim_characters — Символы для обрезки. Необязательный. String. Если не указано, используется ' ' (одинарный пробел) в качестве символа обрезки.

Возвращаемое значение

Строка без конечных общих пробелов. String.

Пример

Результат:

trimBoth

Удаляет последовательные вхождения пробелов (ASCII-символ 32) с обоих концов строки.

Синтаксис

Псевдоним: trim.

Аргументы

  • input_string — Строка для обрезки. String.
  • trim_characters — Символы для обрезки. Необязательный. String. Если не указано, используется ' ' (одинарный пробел) в качестве символа обрезки.

Возвращаемое значение

Строка без начальных и конечных общих пробелов. String.

Пример

Результат:

CRC32

Возвращает контрольную сумму CRC32 для строки с использованием полинома CRC-32-IEEE 802.3 и начального значения 0xffffffff (реализация zlib).

Тип результата — UInt32.

CRC32IEEE

Возвращает контрольную сумму CRC32 для строки, с использованием полинома CRC-32-IEEE 802.3.

Тип результата — UInt32.

CRC64

Возвращает контрольную сумму CRC64 для строки, с использованием полинома CRC-64-ECMA.

Тип результата — UInt64.

normalizeUTF8NFC

Конвертирует строку в нормализованную форму NFC, предполагая, что строка является допустимым текстом, закодированным в UTF8.

Синтаксис

Аргументы

  • words — Строка входного текста, закодированная в UTF8. String.

Возвращаемое значение

  • Строка, преобразованная в нормализованную форму NFC. String.

Пример

Результат:

normalizeUTF8NFD

Конвертирует строку в нормализованную форму NFD, предполагая, что строка является допустимым текстом, закодированным в UTF8.

Синтаксис

Аргументы

  • words — Строка входного текста, закодированная в UTF8. String.

Возвращаемое значение

  • Строка, преобразованная в нормализованную форму NFD. String.

Пример

Результат:

normalizeUTF8NFKC

Конвертирует строку в нормализованную форму NFKC, предполагая, что строка является допустимым текстом, закодированным в UTF8.

Синтаксис

Аргументы

  • words — Строка входного текста, закодированная в UTF8. String.

Возвращаемое значение

  • Строка, преобразованная в нормализованную форму NFKC. String.

Пример

Результат:

normalizeUTF8NFKD

Конвертирует строку в нормализованную форму NFKD, предполагая, что строка является допустимым текстом, закодированным в UTF8.

Синтаксис

Аргументы

  • words — Строка входного текста, закодированная в UTF8. String.

Возвращаемое значение

  • Строка, преобразованная в нормализованную форму NFKD. String.

Пример

Результат:

encodeXMLComponent

Экранирует символы со специальным значением в XML, чтобы их можно было разместить в текстовом узле или атрибуте XML.

Следующие символы заменяются: <, &, >, ", '. Смотрите также список ссылок на символы XML и HTML.

Синтаксис

Аргументы

  • x — Входная строка. String.

Возвращаемое значение

  • Экранированная строка. String.

Пример

Результат:

decodeXMLComponent

Декодирует подстроки со специальным значением в XML. Эти подстроки: &quot;, &amp;, &apos;, &gt;, &lt;.

Эта функция также заменяет числовые ссылки на символы на символы Юникода. Поддерживаются как десятичные (например, &#10003;), так и шестнадцатеричные (&#x2713;) формы.

Синтаксис

Аргументы

  • x — Входная строка. String.

Возвращаемое значение

  • Декодированная строка. String.

Пример

Результат:

decodeHTMLComponent

Декодирует подстроки со специальным значением в HTML. Например: &hbar;, &gt;, &diamondsuit;, &heartsuit;, &lt; и т.д.

Эта функция также заменяет числовые ссылки на символы на символы Юникода. Поддерживаются как десятичные (например, &#10003;), так и шестнадцатеричные (&#x2713;) формы.

Синтаксис

Аргументы

  • x — Входная строка. String.

Возвращаемое значение

  • Декодированная строка. String.

Пример

Результат:

extractTextFromHTML

Эта функция извлекает простой текст из HTML или XHTML.

Она не полностью соответствует спецификации HTML, XML или XHTML, но реализация довольно точна и быстра. Правила следующие:

  1. Комментарии пропускаются. Пример: <!-- test -->. Комментарий должен заканчиваться на -->. Вложенные комментарии запрещены. Примечание: конструкции типа <!--> и <!---> не являются допустимыми комментариями в HTML, но они пропускаются другими правилами.
  2. CDATA копируется без изменений. Примечание: CDATA специфично для XML/XHTML и обрабатывается на основе “лучшего усилия”.
  3. Элементы script и style удаляются вместе со всем их содержимым. Примечание: предполагается, что закрывающий тег не может появиться внутри содержимого. Например, в строковом литерале JS должен быть экранирован как "<\/script>". Примечание: комментарии и CDATA могут присутствовать внутри script или style — тогда закрывающие теги не ищутся внутри CDATA. Пример: <script><![CDATA[</script>]]></script>. Но они все равно ищутся внутри комментариев. Иногда это становится сложным: <script>var x = "<!--"; </script> var y = "-->"; alert(x + y);</script>. Примечание: script и style могут быть именами XML-пространств имен — тогда они не обрабатываются как обычные элементы script или style. Пример: <script:a>Hello</script:a>. Примечание: пробелы возможны после имени закрывающего тега: </script >, но не перед: < / script>.
  4. Другие теги или тегоподобные элементы пропускаются без внутреннего содержимого. Пример: <a>.</a>. Примечание: ожидается, что этот HTML недопустим: <a test=">"></a>. Примечание: также игнорируется что-то, похожее на теги: <>, <!>, и т.д. Примечание: тег без конца пропускается до конца ввода: <hello .
  5. HTML и XML сущности не декодируются. Они должны обрабатываться отдельной функцией.
  6. Пробелы в тексте сокращаются или вставляются по определенным правилам.
    • Пробелы в начале и в конце удаляются.
    • Последовательные пробелы сокращаются.
    • Но если текст разделен другими элементами и пробелов нет, вставляется пробел.
    • Это может привести к неестественным примерам: Hello<b>world</b>, Hello<!-- -->world — в этом HTML нет пробела, но функция вставляет его. Также учтите: Hello<p>world</p>, Hello<br>world. Это поведение разумно для анализа данных, например, чтобы преобразовать HTML в пакет слов.
  7. Также обратите внимание, что корректная обработка пробелов требует поддержки свойств <pre></pre> и CSS display и white-space.

Синтаксис

Аргументы

  • x — входной текст. String.

Возвращаемое значение

  • Извлеченный текст. String.

Пример

Первый пример содержит несколько тегов и комментарий и также демонстрирует обработку пробелов. Второй пример показывает обработку CDATA и элемента script. В третьем примере текст извлекается из полного HTML-ответа, полученного с помощью функции url.

Результат:

ascii

Возвращает кодовую точку ASCII (в виде Int32) первого символа строки s.

Если s пустая, результат — 0. Если первый символ не является ASCII символом или не является частью диапазона дополнения Latin-1 кодировки UTF-16, результат неопределен.

Синтаксис

soundex

Возвращает код Soundex строки.

Синтаксис

Аргументы

  • val — Входное значение. String

Возвращаемое значение

  • Код Soundex входного значения. String

Пример

Результат:

punycodeEncode

Возвращает представление Punycode строки. Строка должна быть закодирована в UTF8, в противном случае поведение будет неопределенным.

Синтаксис

Аргументы

  • val — Входное значение. String

Возвращаемое значение

  • Представление Punycode входного значения. String

Пример

Результат:

punycodeDecode

Возвращает текст в формате UTF8 из строки, закодированной в Punycode. Если предоставлена недопустимая строка, закодированная в Punycode, возникает исключение.

Синтаксис

Аргументы

  • val — строка, закодированная в Punycode. String

Возвращаемое значение

  • Исходный текст входного значения. String

Пример

Результат:

tryPunycodeDecode

Как punycodeDecode, но возвращает пустую строку, если предоставлена недопустимая строка, закодированная в Punycode.

idnaEncode

Возвращает ASCII-представление (алгоритм ToASCII) доменного имени в соответствии с механизмом Internationalized Domain Names in Applications (IDNA). Входная строка должна быть закодирована в UTF и переводима в ASCII-строку, иначе возникает исключение. Примечание: проводятся декодирование процента или обрезка табуляций, пробелов или управляющих символов не проводится.

Синтаксис

Аргументы

  • val — Входное значение. String

Возвращаемое значение

  • ASCII-представление в соответствии с механизмом IDNA входного значения. String

Пример

Результат:

tryIdnaEncode

Как idnaEncode, но возвращает пустую строку в случае ошибки вместо того, чтобы вызывать исключение.

idnaDecode

Возвращает представление Юникода (UTF-8) доменного имени в соответствии с механизмом Internationalized Domain Names in Applications (IDNA). В случае ошибки (например, из-за недопустимого ввода) возвращается входная строка. Обратите внимание, что повторное применение idnaEncode() и idnaDecode() не обязательно вернет исходную строку из-за нормализации регистра.

Синтаксис

Аргументы

  • val — Входное значение. String

Возвращаемое значение

  • Юникодное (UTF-8) представление в соответствии с механизмом IDNA входного значения. String

Пример

Результат:

byteHammingDistance

Вычисляет расстояние Хэмминга между двумя строками байтов.

Синтаксис

Примеры

Результат:

Псевдоним: mismatches

stringJaccardIndex

Вычисляет индекс схожести Жарра между двумя строками байтов.

Синтаксис

Примеры

Результат:

stringJaccardIndexUTF8

Как stringJaccardIndex, но для строк, закодированных в UTF8.

editDistance

Вычисляет расстояние редактирования между двумя строками байтов.

Синтаксис

Примеры

Результат:

Псевдоним: levenshteinDistance

editDistanceUTF8

Вычисляет расстояние редактирования между двумя строками UTF8.

Синтаксис

Примеры

Результат:

Псевдоним: levenshteinDistanceUTF8

damerauLevenshteinDistance

Вычисляет расстояние Дамерау-Левенштейна между двумя строками байтов.

Синтаксис

Примеры

Результат:

jaroSimilarity

Вычисляет схожесть Jaro между двумя строками байтов.

Синтаксис

Примеры

Результат:

jaroWinklerSimilarity

Вычисляет схожесть Jaro-Winkler между двумя строками байтов.

Синтаксис

Примеры

Результат:

initcap

Конвертирует первую букву каждого слова в верхний регистр, а остальные — в нижний. Слова — это последовательности алфавитно-цифровых символов, разделенные неалфавитными символами.

примечание

Поскольку initCap преобразует только первую букву каждого слова в верхний регистр, вы можете наблюдать неожидаемое поведение для слов, содержащих апострофы или прописные буквы. Например:

возвращает

Это известное поведение, на данный момент нет планов его исправить.

Синтаксис

Аргументы

  • val — Входное значение. String.

Возвращаемое значение

  • val с первой буквой каждого слова, преобразованной в верхний регистр. String.

Пример

Запрос:

Результат:

initcapUTF8

Как initcap, initcapUTF8 преобразует первую букву каждого слова в верхний регистр, а остальные — в нижний. Предполагает, что строка содержит допустимый текст, закодированный в UTF-8. Если это предположение нарушается, исключение не вызывается, а результат остается неопределенным.

примечание

Эта функция не обнаруживает язык, например, для турецкого результат может быть не совсем правильным (i/İ против i/I). Если длина байтовой последовательности UTF-8 отличается для верхнего и нижнего регистров какого-либо кода, результат может быть неправильным для этого кода.

Синтаксис

Аргументы

  • val — Входное значение. String.

Возвращаемое значение

  • val с первой буквой каждого слова, преобразованной в верхний регистр. String.

Пример

Запрос:

Результат:

firstLine

Возвращает первую строку из многострочной строки.

Синтаксис

Аргументы

  • val — Входное значение. String

Возвращаемое значение

  • Первая строка входного значения или все значение, если нет разделителей строк. String

Пример

Результат:

stringCompare

Сравнивает две строки лексикографически.

Синтаксис

Аргументы

  • string1 — Первая строка для сравнения. String
  • string2 - Вторая строка для сравнения. String
  • string1_offset — Позиция (нумерация с нуля) в string1, с которой начинается сравнение. Необязательный, положительный номер.
  • string2_offset — Позиция (индекс, нумерация с нуля) в string2, с которой начинается сравнение. Необязательный, положительный номер.
  • num_bytes — Максимальное количество байтов для сравнения в обеих строках. Если string_offset + num_bytes превышает конец входной строки, num_bytes будет уменьшено соответствующим образом.

Возвращаемое значение

  • -1 — Если string1[string1_offset: string1_offset + num_bytes] < string2[string2_offset:string2_offset + num_bytes] и string1_offset < len(string1) и string2_offset < len(string2). Если string1_offset >= len(string1) и string2_offset < len(string2).
  • 0 — Если string1[string1_offset: string1_offset + num_bytes] = string2[string2_offset:string2_offset + num_bytes] и string1_offset < len(string1) и string2_offset < len(string2). Если string1_offset >= len(string1) и string2_offset >= len(string2).
  • 1 — Если string1[string1_offset: string1_offset + num_bytes] > string2[string2_offset:string2_offset + num_bytes] и string1_offset < len(string1) и string2_offset < len(string2). Если string1_offset < len(string1) и string2_offset >= len(string2).

Пример

Результат:

Результат: