Функции для работы со строками
Функции для поиска в строках и для замены в строках описаны отдельно.
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/İ vs. i/I). Если длина байтовой последовательности UTF-8 различна для верхнего и нижнего регистра кодовой точки (например, ẞ
и ß
), результат может быть некорректным для этой кодовой точки.
Синтаксис
Параметры
input
— Строка типа Строка.
Возвращаемое значение
- Значение типа Строка.
Пример
Запрос:
Результат:
upperUTF8
Конвертирует строку в заглавные, предполагая, что строка содержит корректно закодированный текст в UTF-8. Если это предположение нарушается, исключение не выбрасывается, и результат остается неопределенным.
Не определяет язык, например, для турецкого результат может быть не совсем корректным (i/İ vs. 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 — разделитель. Константный String или 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 в "биткойн" алфавите.
Синтаксис
Аргументы
plaintext
— Строка колонка или константа.
Возвращаемое значение
- Строка, содержащая закодированное значение аргумента. Строка или FixedString.
Пример
Результат:
base58Decode
Принимает строку и декодирует ее с использованием схемы кодирования Base58 с "биткойн" алфавитом.
Синтаксис
Аргументы
encoded
— Строка или FixedString. Если строка не является допустимым значением, закодированным в Base58, будет выброшено исключение.
Возвращаемое значение
- Строка, содержащая декодированное значение аргумента. Строка.
Пример
Результат:
tryBase58Decode
Как base58Decode
, но возвращает пустую строку в случае ошибки.
Синтаксис
Параметры
encoded
: Строка или FixedString. Если строка не является допустимым значением, закодированным в Base58, возвращает пустую строку в случае ошибки.
Возвращаемое значение
- Строка, содержащая декодированное значение аргумента.
Примеры
Запрос:
base64Encode
Кодирует строку или FixedString как 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.
Она не соответствует 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 в мешок слов.
- Также отметим, что корректная обработка пробелов требует поддержки свойств
<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
Возвращает текст, закодированный в Юникоде (UTF-8) из строки, закодированной в 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) доменного имени согласно механизму Международные доменные имена в приложениях (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
).
Пример
Результат:
Результат: