Функции для работы со строками
Функции для поиска в строках и для замены в строках описаны отдельно.
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
Дополняет строку слева пробелами или указанной строкой (несколько раз, если это необходимо) до тех пор, пока результирующая строка не достигнет указанной длины.
Синтаксис
Псевдоним: 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
Дополняет строку справа пробелами или указанной строкой (несколько раз, если это необходимо) до тех пор, пока результирующая строка не достигнет указанной длины.
Синтаксис
Псевдоним: 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 или Enumoffset
— Начальная позиция подстроки вs
. (U)Int*.length
— Максимальная длина подстроки. (U)Int*. Необязательно.
Возвращаемое значение
Подстрока s
длиной length
байт, начиная с индекса offset
. Строка.
Пример
Результат:
substringUTF8
Возвращает подстроку строки s
, которая начинается с указанного индекса байта offset
для кодовых точек Unicode. Число байтов начинается с 1. Если offset
равно 0, возвращается пустая строка. Если offset
отрицательный, подстрока начинается с pos
символов от конца строки, а не с начала. Дополнительным аргументом length
задается максимальное количество байтов, которые может иметь возвращаемая подстрока.
Предполагается, что строка содержит допустимый текст в кодировке UTF-8. Если это предположение нарушается, исключение не выбрасывается, и результат неопределен.
Синтаксис
Аргументы
s
— Строка, из которой нужно извлечь подстроку. Строка, FixedString или Enumoffset
— Начальная позиция подстроки в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".
Синтаксис
Аргументы
plaintext
— Строка или константа.
Возвращаемое значение
- Строка, содержащая закодированное значение аргумента. Строка или FixedString.
Пример
Результат:
base58Decode
Принимает строку и декодирует её с использованием кодировки Base58 с использованием алфавита "Bitcoin".
Синтаксис
Аргументы
encoded
— Строка или FixedString. Если строка не является допустимым значением, закодированным в Base58, будет выброшено исключение.
Возвращаемое значение
- Строка, содержащая декодированное значение аргумента. Строка.
Пример
Результат:
tryBase58Decode
Как base58Decode
, но возвращает пустую строку в случае ошибки.
Синтаксис
Параметры
encoded
: Строка или FixedString. Если строка не является допустимым значением, закодированным в Base58, возвращает пустую строку в случае ошибки.
Возвращаемое значение
- Строка, содержащая декодированное значение аргумента.
Примеры
Запрос:
base64Encode
Кодирует строку или фиксированную строку как base64 в соответствии с RFC 4648.
Псевдоним: TO_BASE64
.
Синтаксис
Аргументы
plaintext
— Строка или константа.
Возвращаемое значение
- Строка, содержащая закодированное значение аргумента.
Пример
Результат:
base64URLEncode
Кодирует URL (String или FixedString) в base64 с модификациями, специфичными для URL, в соответствии с RFC 4648.
Синтаксис
Аргументы
url
— String столбец или константа.
Возвращаемое значение
- Строка, содержащая закодированное значение аргумента.
Пример
Результат:
base64Decode
Принимает строку и декодирует её из base64, в соответствии с RFC 4648. Вызывает исключение в случае ошибки.
Псевдоним: FROM_BASE64
.
Синтаксис
Аргументы
encoded
— String столбец или константа. Если строка не является допустимым значением, закодированным в Base64, возникает исключение.
Возвращаемое значение
- Строка, содержащая декодированное значение аргумента.
Пример
Результат:
base64URLDecode
Принимает URL, закодированный в base64, и декодирует его из base64 с модификациями, специфичными для URL, в соответствии с RFC 4648. Вызывает исключение в случае ошибки.
Синтаксис
Аргументы
encodedURL
— String столбец или константа. Если строка не является допустимым значением, закодированным в Base64 с модификациями для URL, возникает исключение.
Возвращаемое значение
- Строка, содержащая декодированное значение аргумента.
Пример
Результат:
tryBase64Decode
Как base64Decode
, но возвращает пустую строку в случае ошибки.
Синтаксис
Аргументы
encoded
— String столбец или константа. Если строка не является допустимым значением, закодированным в Base64, возвращает пустую строку.
Возвращаемое значение
- Строка, содержащая декодированное значение аргумента.
Примеры
Запрос:
tryBase64URLDecode
Как base64URLDecode
, но возвращает пустую строку в случае ошибки.
Синтаксис
Параметры
encodedURL
— String столбец или константа. Если строка не является допустимым значением, закодированным в 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
и suffix
по символам UTF-8.
Пример
Результат:
trim
Удаляет указанные символы с начала или конца строки. Если не указано иное, функция удаляет пробелы (ASCII-символ 32).
Синтаксис
Аргументы
Возвращаемое значение
Строка без начальных и/или конечных указанных символов. 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. Эти подстроки: "
, &
, '
, >
, <
.
Эта функция также заменяет числовые ссылки на символы на символы Юникода. Поддерживаются как десятичные (например, ✓
), так и шестнадцатеричные (✓
) формы.
Синтаксис
Аргументы
x
— Входная строка. String.
Возвращаемое значение
- Декодированная строка. String.
Пример
Результат:
decodeHTMLComponent
Декодирует подстроки со специальным значением в HTML. Например: ℏ
, >
, ♦
, ♥
, <
и т.д.
Эта функция также заменяет числовые ссылки на символы на символы Юникода. Поддерживаются как десятичные (например, ✓
), так и шестнадцатеричные (✓
) формы.
Синтаксис
Аргументы
x
— Входная строка. String.
Возвращаемое значение
- Декодированная строка. String.
Пример
Результат:
extractTextFromHTML
Эта функция извлекает простой текст из HTML или XHTML.
Она не полностью соответствует спецификации 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 в пакет слов.
- Также обратите внимание, что корректная обработка пробелов требует поддержки свойств
<pre></pre>
и CSSdisplay
и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
— Первая строка для сравнения. 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
).
Пример
Результат:
Результат: