Функции для работы со строками
Функции для поиска в строках и для замены в строках описаны отдельно.
empty
Проверяет, является ли входная строка пустой. Строка считается непустой, если она содержит хотя бы один байт, даже если этот байт является пробелом или нулевым байтом.
Функция также доступна для массивов и UUID.
Синтаксис
Аргументы
x
— Входное значение. Строка.
Возвращаемое значение
- Возвращает
1
для пустой строки или0
для непустой строки. UInt8.
Пример
Результат:
notEmpty
Проверяет, является ли входная строка непустой. Строка считается непустой, если она содержит хотя бы один байт, даже если этот байт является пробелом или нулевым байтом.
Функция также доступна для массивов и UUID.
Синтаксис
Аргументы
x
— Входное значение. Строка.
Возвращаемое значение
- Возвращает
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
Дополняет строку слева пробелами или заданной строкой (несколько раз, если необходимо), пока результирующая строка не достигнет заданной length
.
Синтаксис
Псевдоним: LPAD
Аргументы
string
— Входная строка, которую нужно дополнить. Строка.length
— Длина результирующей строки. UInt или Int. Если значение меньше длины входной строки, то входная строка будет сокращена доlength
символов.pad_string
— Строка, которой нужно дополнить входную строку. Строка. Необязательный. Если не указана, то входная строка дополняется пробелами.
Возвращаемое значение
- Строка, дополненная слево заданной длины. Строка.
Пример
Результат:
leftPadUTF8
Дополняет строку слева пробелами или заданной строкой (несколько раз, если необходимо), пока результирующая строка не достигнет заданной длины. В отличие от leftPad, который измеряет длину строки в байтах, длина строки измеряется в кодовых точках.
Синтаксис
Аргументы
string
— Входная строка, которую нужно дополнить. Строка.length
— Длина результирующей строки. UInt или Int. Если значение меньше длины входной строки, то входная строка будет сокращена доlength
символов.pad_string
— Строка, которой нужно дополнить входную строку. Строка. Необязательный. Если не указана, то входная строка дополняется пробелами.
Возвращаемое значение
- Строка, дополненная слева заданной длины. Строка.
Пример
Результат:
right
Возвращает подстроку строки 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
Дополняет строку справа пробелами или заданной строкой (несколько раз, если необходимо), пока результирующая строка не достигнет заданной length
.
Синтаксис
Псевдоним: 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
Параметры
input
: Строка типа Строка.
Возвращаемое значение
- Значение типа Строка.
Пример
Запрос:
upper
Преобразует символы латинского алфавита ASCII в строке в прописные.
Синтаксис
Псевдоним: ucase
Параметры
input
— Строка типа Строка.
Возвращаемое значение
- Значение типа Строка.
Примеры
Запрос:
lowerUTF8
Преобразует строку в строчные буквы, предполагая, что строка содержит действительный текст, закодированный в UTF-8. Если это предположение нарушено, исключение не будет выброшено, и результат будет неопределенным.
Не определяет язык, например, для турецкого языка результат может быть не совсем корректным (i/İ против i/I). Если длина последовательности байтов UTF-8 различна для прописных и строчных букв кодовой точки (таких как ẞ
и ß
), результат может быть некорректным для этой кодовой точки.
Синтаксис
Параметры
input
— Строка типа Строка.
Возвращаемое значение
- Значение типа Строка.
Пример
Запрос:
Результат:
upperUTF8
Преобразует строку в прописные буквы, предполагая, что строка содержит действительный текст, закодированный в UTF-8. Если это предположение нарушено, исключение не будет выброшено, и результат будет неопределенным.
Не определяет язык, например, для турецкого языка результат может быть не совсем корректным (i/İ против i/I). Если длина последовательности байтов UTF-8 различна для прописных и строчных букв кодовой точки (таких как ẞ
и ß
), результат может быть некорректным для этой кодовой точки.
Синтаксис
Параметры
input
— Строка типа Строка.
Возвращаемое значение
- Значение типа Строка.
Пример
Запрос:
Результат:
isValidUTF8
Возвращает 1, если набор байтов представляет собой действительный текст, закодированный в UTF-8, в противном случае 0.
Синтаксис
Параметры
input
— Строка типа Строка.
Возвращаемое значение
- Возвращает
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
— Количество повторов пробела. UInt* или Int*.
Возвращаемое значение
Строка, содержащая строку
, повторенную 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
.
Синтаксис
base32Encode
Кодирует строку с использованием Base32.
Синтаксис
Аргументы
plaintext
— Строка колонка или константа.
Возвращаемое значение
- Строка, содержащая закодированное значение аргумента. Строка или FixedString.
Пример
Результат:
base32Decode
Принимает строку и декодирует ее с использованием схемы кодирования Base32.
Синтаксис
Аргументы
encoded
— Строка или FixedString. Если строка не является допустимым значением, закодированным в Base32, выбрасывается исключение.
Возвращаемое значение
- Строка, содержащая декодированное значение аргумента. Строка.
Пример
Результат:
tryBase32Decode
Как base32Decode
, но возвращает пустую строку в случае ошибки.
Синтаксис
Параметры
encoded
: Строка или FixedString. Если строка не является допустимым значением, закодированным в Base32, возвращает пустую строку в случае ошибки.
Возвращаемое значение
- Строка, содержащая декодированное значение аргумента.
Примеры
Запрос:
base58Encode
Кодирует строку с использованием Base58 в алфавите "Bitcoin".
Синтаксис
Аргументы
plaintext
— Строка колонка или константа.
Возвращаемое значение
- Строка, содержащая закодированное значение аргумента. Строка или FixedString.
Пример
Результат:
base58Decode
Принимает строку и декодирует ее с использованием схемы кодирования Base58 с использованием алфавита "Bitcoin".
Синтаксис
Аргументы
encoded
— Строка или FixedString. Если строка не является допустимым значением, закодированным в Base58, выбрасывается исключение.
Возвращаемое значение
- Строка, содержащая декодированное значение аргумента. Строка.
Пример
Результат:
tryBase58Decode
Как base58Decode
, но возвращает пустую строку в случае ошибки.
Синтаксис
Параметры
encoded
: Строка или FixedString. Если строка не является допустимым значением, закодированным в Base58, возвращает пустую строку в случае ошибки.
Возвращаемое значение
- Строка, содержащая декодированное значение аргумента.
Примеры
Запрос:
base64Encode
Закодирует строку или FixedString в base64 в соответствии с RFC 4648.
Псевдоним: TO_BASE64
.
Синтаксис
Аргументы
plaintext
— Строка колонка или константа.
Возвращаемое значение
- Строка, содержащая закодированное значение аргумента.
Пример
Результат:
base64URLEncode
Кодирует URL (Строка или FixedString) в base64 с модификациями, специфичными для URL, в соответствии с RFC 4648.
Синтаксис
Аргументы
url
— Строка колонка или константа.
Возвращаемое значение
- Строка, содержащая закодированное значение аргумента.
Пример
Результат:
base64Decode
Принимает строку и декодирует ее из base64 в соответствии с RFC 4648. Выбрасывает исключение в случае ошибки.
Псевдоним: FROM_BASE64
.
Синтаксис
Аргументы
encoded
— Строка колонка или константа. Если строка не является допустимым значением, закодированным в Base64, выбрасывается исключение.
Возвращаемое значение
- Строка, содержащая декодированное значение аргумента.
Пример
Результат:
base64URLDecode
Принимает URL, закодированный в base64, и декодирует его из base64 с модификациями, специфичными для URL, в соответствии с RFC 4648. Выбрасывает исключение в случае ошибки.
Синтаксис
Аргументы
encodedURL
— Строка колонка или константа. Если строка не является допустимым значением, закодированным в Base64 с модификациями, специфичными для URL, выбрасывается исключение.
Возвращаемое значение
- Строка, содержащая декодированное значение аргумента.
Пример
Результат:
tryBase64Decode
Как base64Decode
, но возвращает пустую строку в случае ошибки.
Синтаксис
Аргументы
encoded
— Строка колонка или константа. Если строка не является допустимым значением, закодированным в Base64, возвращает пустую строку.
Возвращаемое значение
- Строка, содержащая декодированное значение аргумента.
Примеры
Запрос:
tryBase64URLDecode
Как base64URLDecode
, но возвращает пустую строку в случае ошибки.
Синтаксис
Параметры
encodedURL
— Строка колонка или константа. Если строка не является допустимым значением, закодированным в Base64 с модификациями, специфичными для URL, возвращает пустую строку.
Возвращаемое значение
- Строка, содержащая декодированное значение аргумента.
Примеры
Запрос:
endsWith
Возвращает, заканчивается ли строка str
на suffix
.
Синтаксис
endsWithUTF8
Возвращает, заканчивается ли строка str
на suffix
. Разница между endsWithUTF8
и endsWith
заключается в том, что endsWithUTF8
сравнивает str
и suffix
по символам UTF-8.
Синтаксис
Пример
Результат:
startsWith
Возвращает, начинается ли строка str
на prefix
.
Синтаксис
Пример
startsWithUTF8
Возвращает, начинается ли строка str
на prefix
. Разница между startsWithUTF8
и startsWith
заключается в том, что startsWithUTF8
сравнивает str
и prefix
по символам UTF-8.
Пример
Результат:
trim
Удаляет указанные символы с начала или конца строки. Если не указано иное, функция удаляет пробелы (ASCII-символ 32).
Синтаксис
Аргументы
Возвращаемое значение
Строка без начальных и/или конечных указанных символов. Строка.
Пример
Результат:
trimLeft
Удаляет последовательные вхождения пробелов (ASCII-символ 32) с начала строки.
Синтаксис
Псевдоним: ltrim
.
Аргументы
input_string
— Строка для обрезки. Строка.trim_characters
— Символы для обрезки. Необязательный. Строка. Если не указано, используется' '
(одинарный пробел) в качестве символа для обрезки.
Возвращаемое значение
Строка без начальных общих пробелов. Строка.
Пример
Результат:
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 или атрибут.
Следующие символы заменяются: <
, &
, >
, "
, '
.
Также см. список символов и HTML-сущностей XML.
Синтаксис
Аргументы
x
— Входная строка. String.
Возвращаемое значение
- Экранированная строка. String.
Пример
Результат:
decodeXMLComponent
Декодирует подстроки со специальным значением в XML. Эти подстроки: "
&
'
>
<
Эта функция также заменяет числовые символы-ссылки на символы Юникода. Поддерживаются как десятичные (например, ✓
), так и шестнадцатеричные (✓
) формы.
Синтаксис
Аргументы
x
— Входная строка. String.
Возвращаемое значение
- Декодированная строка. String.
Пример
Результат:
decodeHTMLComponent
Декодирует подстроки со специальным значением в HTML. Например: ℏ
>
♦
♥
<
и др.
Эта функция также заменяет числовые символы-ссылки на символы Юникода. Поддерживаются как десятичные (например, ✓
), так и шестнадцатеричные (✓
) формы.
Синтаксис
Аргументы
x
— Входная строка. String.
Возвращаемое значение
- Декодированная строка. String.
Пример
Результат:
extractTextFromHTML
Эта функция извлекает простой текст из HTML или XHTML.
Она не соответствует на 100% спецификации HTML, XML или XHTML, но реализация достаточно точная и быстрая. Правила следующие:
- Комментарии пропускаются. Пример:
<!-- test -->
. Комментарий должен заканчиваться на-->
. Вложенные комментарии не допускаются. Примечание: конструкции типа<!-->
и<!--->
не являются допустимыми комментариями в HTML, но они пропускаются другими правилами. - CDATA вставляется без изменений. Примечание: CDATA специфичен для XML/XHTML и обрабатывается на основе «лучших усилий».
- Элементы
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>
. - Другие теги или элементы, похожие на теги, пропускаются без внутреннего содержания. Пример:
<a>.</a>
Примечание: предполагается, что этот HTML является недопустимым:<a test=">"></a>
Примечание: она также пропускает что-то похожее на теги:<>
,<!>
, и т.д. Примечание: тег без окончания пропускается до конца ввода:<hello
- HTML и XML-сущности не декодируются. Они должны обрабатываться отдельной функцией.
- Пробелы в тексте сжимаются или вставляются по определенным правилам.
- Пробелы в начале и в конце удаляются.
- Последовательные пробелы сжимаются.
- Но если текст разделен другими элементами и нет пробела, он вставляется.
- Это может привести к неестественным примерам:
Hello<b>world</b>
,Hello<!-- -->world
— в HTML нет пробела, но функция вставляет его. Также рассмотрите:Hello<p>world</p>
,Hello<br>world
. Это поведение разумно для анализа данных, например, для преобразования HTML в мешок слов.
- Также стоит отметить, что корректная обработка пробелов требует поддержки свойств CSS
<pre></pre>
,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) доменного имени в соответствии с механизмом Международные доменные имена в приложениях (IDNA). Входная строка должна быть закодирована в UTF и должна быть преобразована в строку ASCII, иначе возникает исключение. Примечание: Процентное декодирование или обрезка табуляций, пробелов или управляющих символов не выполняются.
Синтаксис
Аргументы
val
— Входное значение. String
Возвращаемое значение
- ASCII-представление в соответствии с механизмом IDNA входного значения. String
Пример
Результат:
tryIdnaEncode
Как idnaEncode
, но возвращает пустую строку в случае ошибки вместо выброса исключения.
idnaDecode
Возвращает Юникодное (UTF-8) представление (алгоритм ToUnicode) доменного имени в соответствии с механизмом Международные доменные имена в приложениях (IDNA).
В случае ошибки (например, если вход неправильный) входная строка возвращается.
Обратите внимание, что повторное применение idnaEncode()
и idnaDecode()
не обязательно возвращает исходную строку из-за нормализации регистра.
Синтаксис
Аргументы
val
— Входное значение. String
Возвращаемое значение
- Юникодное (UTF-8) представление в соответствии с механизмом IDNA входного значения. String
Пример
Результат:
byteHammingDistance
Вычисляет расстояние Хэмминга между двумя байтовыми строками.
Синтаксис
Примеры
Результат:
Псевдоним: mismatches
stringJaccardIndex
Вычисляет индекс сходства Джекара между двумя байтовыми строками.
Синтаксис
Примеры
Результат:
stringJaccardIndexUTF8
Как stringJaccardIndex, но для строк, закодированных в UTF8.
editDistance
Вычисляет расстояние редактирования между двумя байтовыми строками.
Синтаксис
Примеры
Результат:
Псевдоним: levenshteinDistance
editDistanceUTF8
Вычисляет расстояние редактирования между двумя строками в кодировке UTF8.
Синтаксис
Примеры
Результат:
Псевдоним: levenshteinDistanceUTF8
damerauLevenshteinDistance
Вычисляет расстояние Дамерау-Левенштейна между двумя байтовыми строками.
Синтаксис
Примеры
Результат:
jaroSimilarity
Вычисляет сходство Яро между двумя байтовыми строками.
Синтаксис
Примеры
Результат:
jaroWinklerSimilarity
Вычисляет сходство Яро-Уинклера между двумя байтовыми строками.
Синтаксис
Примеры
Результат:
initcap
Преобразует первую букву каждого слова в верхний регистр, а остальные — в нижний. Слова — это последовательности буквенно-цифровых символов, разделенные не буквенно-цифровыми символами.
Поскольку initCap
преобразует только первую букву каждого слова в верхний регистр, вы можете наблюдать неожиданное поведение для слов, содержащих апострофы или заглавные буквы. Например:
возвращает
Это известное поведение, и в настоящее время нет планов по его исправлению.
Синтаксис
Аргументы
val
— Входное значение. String.
Возвращаемое значение
val
с первой буквой каждого слова, преобразованной в верхний регистр. String.
Пример
Запрос:
Результат:
initcapUTF8
Как initcap, initcapUTF8
преобразует первую букву каждого слова в верхний регистр, а остальные — в нижний. Предполагает, что строка содержит корректный текст, закодированный в UTF-8.
Если это предположение нарушено, исключение не выбрасывается, и результат неопределен.
Эта функция не определяет язык, например, для турецкого результат может быть не совсем корректным (i/İ vs. i/I). Если длина байтовой последовательности UTF-8 отличается для верхнего и нижнего регистра определенной кодовой точки, результат может быть неправильным для этой кодовой точки.
Синтаксис
Аргументы
val
— Входное значение. String.
Возвращаемое значение
val
с первой буквой каждого слова, преобразованной в верхний регистр. String.
Пример
Запрос:
Результат:
firstLine
Возвращает первую строку из многострочной строки.
Синтаксис
Аргументы
val
— Входное значение. String
Возвращаемое значение
- Первая строка входного значения или всё значение, если нет разделителей строк. String
Пример
Результат:
stringCompare
Сравнивает две строки лексикографически.
Синтаксис
Аргументы
string1
— Первая строка для сравнения. Stringstring2
- Вторая строка для сравнения. Stringstring1_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
).
Пример
Результат:
Результат:
sparseGrams
Находит все подстроки заданной строки, длина которых составляет не менее n
,
где хеши (n-1)-грамм на границах подстроки
строго больше, чем у любой (n-1)-граммы внутри подстроки.
Использует crc32 в качестве хеш-функции.
Синтаксис
Аргументы
s
— Входная строка. Stringmin_ngram_length
— Минимальная длина извлекаемой ngram. Значение по умолчанию и минимальное равно 3.max_ngram_length
— Максимальная длина извлекаемой ngram. Значение по умолчанию равно 100. Должно быть не менее 'min_ngram_length'.
Возвращаемое значение
Пример
Результат:
sparseGramsUTF8
Находит все подстроки заданной строки, длина которых составляет не менее n
,
где хеши (n-1)-грамм на границах подстроки
строго больше, чем у любой (n-1)-граммы внутри подстроки.
Использует crc32 в качестве хеш-функции.
Ожидает строку в кодировке UTF-8, выбрасывает исключение в случае недопустимой последовательности UTF-8.
Синтаксис
Аргументы
s
— Входная строка. Stringmin_ngram_length
— Минимальная длина извлекаемой ngram. Значение по умолчанию и минимальное равно 3.max_ngram_length
— Максимальная длина извлекаемой ngram. Значение по умолчанию равно 100. Должно быть не менее 'min_ngram_length'.
Возвращаемое значение
Пример
Результат:
sparseGramsHashes
Находит хеши всех подстрок заданной строки, длина которых составляет не менее n
,
где хеши (n-1)-грамм на границах подстроки
строго больше, чем у любой (n-1)-граммы внутри подстроки.
Использует crc32 в качестве хеш-функции.
Синтаксис
Аргументы
s
— Входная строка. Stringmin_ngram_length
— Минимальная длина извлекаемой ngram. Значение по умолчанию и минимальное равно 3.max_ngram_length
— Максимальная длина извлекаемой ngram. Значение по умолчанию равно 100. Должно быть не менее 'min_ngram_length'.
Возвращаемое значение
Пример
Результат:
sparseGramsHashesUTF8
Находит хеши всех подстрок заданной строки, длина которых составляет не менее n
,
где хеши (n-1)-грамм на границах подстроки
строго больше, чем у любой (n-1)-граммы внутри подстроки.
Использует crc32 в качестве хеш-функции.
Ожидает строку в кодировке UTF-8, выбрасывает исключение в случае недопустимой последовательности UTF-8.
Синтаксис
Аргументы
s
— Входная строка. Stringmin_ngram_length
— Минимальная длина извлекаемой ngram. Значение по умолчанию и минимальное равно 3.max_ngram_length
— Максимальная длина извлекаемой ngram. Значение по умолчанию равно 100. Должно быть не менее 'min_ngram_length'.
Возвращаемое значение
Пример
Результат:
stringBytesUniq
Считает количество различных байтов в строке.
Синтаксис
Аргументы
s
— Строка для анализа. String.
Возвращаемое значение
- Количество различных байтов в строке. UInt16.
Пример
Результат:
stringBytesEntropy
Вычисляет энтропию Шеннона распределения байтов в строке.
Синтаксис
Аргументы
s
— Строка для анализа. String.
Возвращаемое значение
- Энтропия Шеннона распределения байтов в строке. Float64.
Пример
Результат: