Функции для работы со строками
Функции для поиска в строках и для замены в строках описаны отдельно.
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 или 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 (строку или 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
и suffix
с использованием UTF-8 символов.
Пример
Результат:
trim
Удаляет указанные символы с начала или конца строки. Если не указано иное, функция удаляет пробелы (ASCII-символ 32).
Синтаксис
Аргументы
Возвращаемое значение
Строка без начальных и/или концевых указанных символов. Строка.
Пример
Результат:
trimLeft
Удаляет последовательные вхождения пробелов (ASCII-символ 32) с начала строки.
Синтаксис
Псевдоним: ltrim
.
Аргументы
input_string
— Строка для обрезки. Строка.trim_characters
— Символы для обрезки. Необязательный. Строка. Если не указано, используется символ' '
(одиночный пробел) для обрезки.
Возвращаемое значение
Строка без начальных общих пробелов. Строка.
Пример
Результат:
trimRight
Удаляет последовательные вхождения пробелов (ASCII-символ 32) с конца строки.
Синтаксис
Псевдоним: rtrim
.
Аргументы
input_string
— Строка для обрезки. Строка.trim_characters
— Символы для обрезки. Необязательный. Строка. Если не указано, используется символ' '
(одиночный пробел) для обрезки.
Возвращаемое значение
Строка без конечных общих пробелов. Строка.
Пример
Результат:
trimBoth
Удаляет последовательные вхождения пробелов (ASCII-символ 32) с обоих концов строки.
Синтаксис
Псевдоним: trim
.
Аргументы
input_string
— Строка для обрезки. Строка.trim_characters
— Символы для обрезки. Необязательный. Строка. Если не указано, используется символ' '
(одиночный пробел) для обрезки.
Возвращаемое значение
Строка без начальных и конечных общих пробелов. Строка.
Пример
Результат:
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. Строка.
Возвращаемое значение
- Строка, преобразованная в нормализованную форму NFC. Строка.
Пример
Результат:
normalizeUTF8NFD
Преобразует строку в нормализованную форму NFD, предполагая, что строка является допустимым текстом, закодированным в UTF8.
Синтаксис
Аргументы
words
— Входная строка, закодированная в UTF8. Строка.
Возвращаемое значение
- Строка, преобразованная в нормализованную форму NFD. Строка.
Пример
Результат:
normalizeUTF8NFKC
Преобразует строку в нормализованную форму NFKC, предполагая, что строка является допустимым текстом, закодированным в UTF8.
Синтаксис
Аргументы
words
— Входная строка, закодированная в UTF8. Строка.
Возвращаемое значение
- Строка, преобразованная в нормализованную форму NFKC. Строка.
Пример
Результат:
normalizeUTF8NFKD
Преобразует строку в нормализованную форму NFKD, предполагая, что строка является допустимым текстом, закодированным в UTF8.
Синтаксис
Аргументы
words
— Входная строка, закодированная в UTF8. Строка.
Возвращаемое значение
- Строка, преобразованная в нормализованную форму NFKD. Строка.
Пример
Результат:
encodeXMLComponent
Экранирует символы со специальным значением в XML таким образом, чтобы их можно было поместить в текстовый узел или атрибут XML.
Следующие символы заменяются: <
, &
, >
, "
, '
.
Также смотрите список ссылок на символы XML и HTML.
Синтаксис
Аргументы
x
— Входная строка. Строка.
Возвращаемое значение
- Экранированная строка. Строка.
Пример
Результат:
decodeXMLComponent
Декодирует подстроки со специальным значением в XML. Эти подстроки: "
&
'
>
<
Эта функция также заменяет числовые символы-ссылки на символы Юникода. Поддерживаются как десятичные (например, ✓
), так и шестнадцатеричные (✓
) формы.
Синтаксис
Аргументы
x
— Входная строка. Строка.
Возвращаемое значение
- Декодированная строка. Строка.
Пример
Результат:
decodeHTMLComponent
Декодирует подстроки со специальным значением в HTML. Например: ℏ
>
♦
♥
<
и т.д.
Эта функция также заменяет числовые символы-ссылки на символы Юникода. Поддерживаются как десятичные (например, ✓
), так и шестнадцатеричные (✓
) формы.
Синтаксис
Аргументы
x
— Входная строка. Строка.
Возвращаемое значение
- Декодированная строка. Строка.
Пример
Результат:
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
— входной текст. Строка.
Возвращаемое значение
- Извлеченный текст. Строка.
Пример
Первый пример содержит несколько тегов и комментарий и также показывает обработку пробелов.
Второй пример демонстрирует обработку CDATA
и тега script
.
В третьем примере текст извлекается из полного HTML-ответа, полученного с помощью функции url.
Результат:
ascii
Возвращает код ASCII (как Int32) первого символа строки s
.
Если s
пустая, результат равен 0. Если первый символ не является ASCII-символом или не входит в диапазон Latin-1 supplement в UTF-16, результат неопределен.
Синтаксис
soundex
Возвращает код Soundex строки.
Синтаксис
Аргументы
val
— Входное значение. Строка
Возвращаемое значение
- Код Soundex входного значения. Строка
Пример
Результат:
punycodeEncode
Возвращает представление Punycode строки. Строка должна быть закодирована в UTF8, в противном случае поведение неопределено.
Синтаксис
Аргументы
val
— Входное значение. Строка
Возвращаемое значение
- Представление Punycode входного значения. Строка
Пример
Результат:
punycodeDecode
Возвращает текстовую строку, закодированную в UTF8 из строки, закодированной в Punycode. Если не дана действительная строка, закодированная в Punycode, будет выброшено исключение.
Синтаксис
Аргументы
val
— Строка, закодированная в Punycode. Строка
Возвращаемое значение
- Текстовая строка входного значения. Строка
Пример
Результат:
tryPunycodeDecode
Как punycodeDecode
, но возвращает пустую строку, если не дана действительная строка, закодированная в Punycode.
idnaEncode
Возвращает ASCII-представление (алгоритм ToASCII) имени домена в соответствии с механизмом Internationalized Domain Names in Applications (IDNA). Входная строка должна быть закодирована в UTF и переводима в строку ASCII, в противном случае будет выброшено исключение. Примечание: не выполняется декодирование процентов или обрезка табуляций, пробелов или управляющих символов.
Синтаксис
Аргументы
val
— Входное значение. Строка
Возвращаемое значение
- ASCII-представление в соответствии с механизмом IDNA входного значения. Строка
Пример
Результат:
tryIdnaEncode
Как idnaEncode
, но возвращает пустую строку в случае ошибки вместо выбрасывания исключения.
idnaDecode
Возвращает представление Юникода (UTF-8) (алгоритм ToUnicode) имени домена в соответствии с механизмом Internationalized Domain Names in Applications (IDNA).
В случае ошибки (например, если вход недействителен) возвращается входная строка.
Обратите внимание, что повторное применение idnaEncode()
и idnaDecode()
не обязательно возвращает оригинальную строку из-за нормализации регистра.
Синтаксис
Аргументы
val
— Входное значение. Строка
Возвращаемое значение
- Представление Юникода (UTF-8) в соответствии с механизмом IDNA входного значения. Строка
Пример
Результат:
byteHammingDistance
Вычисляет расстояние Хэмминга между двумя байтовыми строками.
Синтаксис
Примеры
Результат:
Псевдоним: mismatches
stringJaccardIndex
Вычисляет индекс сходства Жаккара между двумя байтовыми строками.
Синтаксис
Примеры
Результат:
stringJaccardIndexUTF8
Как stringJaccardIndex, но для строк, закодированных в UTF8.
editDistance
Вычисляет расстояние редактирования между двумя байтовыми строками.
Синтаксис
Примеры
Результат:
Псевдоним: levenshteinDistance
editDistanceUTF8
Вычисляет расстояние редактирования между двумя UTF8 строками.
Синтаксис
Примеры
Результат:
Псевдоним: levenshteinDistanceUTF8
damerauLevenshteinDistance
Вычисляет расстояние Дамерау-Левенштейна между двумя байтовыми строками.
Синтаксис
Примеры
Результат:
jaroSimilarity
Вычисляет сходство Jaro между двумя байтовыми строками.
Синтаксис
Примеры
Результат:
jaroWinklerSimilarity
Вычисляет сходство Jaro-Winkler между двумя байтовыми строками.
Синтаксис
Примеры
Результат:
initcap
Преобразует первую букву каждого слова в верхний регистр, а остальные — в нижний. Слова — это последовательности буквенно-цифровых символов, разделенные не буквенно-цифровыми символами.
Поскольку initCap
преобразует только первую букву каждого слова в верхний регистр, вы можете наблюдать неожиданное поведение для слов, содержащих апострофы или заглавные буквы. Например:
вернет
Это известное поведение, в настоящее время нет планов его исправить.
Синтаксис
Аргументы
val
— Входное значение. Строка.
Возвращаемое значение
val
с первой буквой каждого слова, преобразованной в верхний регистр. Строка.
Пример
Запрос:
Результат:
initcapUTF8
Как initcap, initcapUTF8
преобразует первую букву каждого слова в верхний регистр, а остальные — в нижний. Предполагает, что строка содержит действительный текст, закодированный в UTF-8.
Если это предположение нарушается, никакое исключение не будет выброшено, и результат будет неопределен.
Эта функция не распознает язык, например, для турецкого результат может быть не совсем корректным (i/İ против i/I). Если длина байтовой последовательности UTF-8 отличается для верхнего и нижнего регистра некоторой кодовой точки, результат может оказаться неверным для этой кодовой точки.
Синтаксис
Аргументы
val
— Входное значение. Строка.
Возвращаемое значение
val
с первой буквой каждого слова, преобразованной в верхний регистр. Строка.
Пример
Запрос:
Результат:
firstLine
Возвращает первую строку из многострочной строки.
Синтаксис
Аргументы
val
— Входное значение. Строка
Возвращаемое значение
- Первая строка входного значения или все значение, если нет разделителей строк. Строка
Пример
Результат:
stringCompare
Сравнивает две строки лексикографически.
Синтаксис
Аргументы
string1
— Первая строка для сравнения. Строкаstring2
- Вторая строка для сравнения.Строкаstring1_offset
— Позиция (с нуля) вstring1
, с которой начинается сравнение. Необязательный, положительное число.string2_offset
— Позиция (индекс с нуля) вstring2
, с которой начинается сравнение. Необязательный, положительное число.num_bytes
— Максимальное количество байт для сравнения в обеих строках. Еслиstring_offset
+num_bytes
превышает конец входной строки,num_bytes
будет соответственно уменьшено.
Возвращаемое значение
- -1 — Если
string1
[string1_offset
:string1_offset
+num_bytes
] <string2
[string2_offset
:string2_offset
+num_bytes
] иstring1_offset
< len(string1
) иstring2_offset
< len(string2
). Еслиstring1_offset
>= len(string1
) иstring2_offset
< len(string2
). - 0 — Если
string1
[string1_offset
:string1_offset
+num_bytes
] =string2
[string2_offset
:string2_offset
+num_bytes
] иstring1_offset
< len(string1
) иstring2_offset
< len(string2
). Еслиstring1_offset
>= len(string1
) иstring2_offset
>= len(string2
). - 1 — Если
string1
[string1_offset
:string1_offset
+num_bytes
] >string2
[string2_offset
:string2_offset
+num_bytes
] иstring1_offset
< len(string1
) иstring2_offset
< len(string2
). Еслиstring1_offset
< len(string1
) иstring2_offset
>= len(string2
).
Пример
Результат:
Результат: