Unicode UDF
Функции для работы с Unicode строками:
Список функций
-
Unicode::IsUtf(String) -> Bool
Проверяет является ли строка валидной utf-8 последовательностью. Например, строка
"\xF0"
не является валидной utf-8 последовательностью, а строка"\xF0\x9F\x90\xB1"
корректно описывает utf-8 emoji с котиком. -
Unicode::GetLength(Utf8{Flags:AutoMap}) -> Uint64
Возвращает длину utf-8 строки в символах (unicode code points). Суррогатные пары учитываются как один символ.
-
Unicode::Substring(Utf8{Flags:AutoMap}, from:Uint64?, len:Uint64?) -> Utf8
Возвращает подстроку начиная с символа
from
длиной вlen
символов. Если аргументlen
опущен, то подстрока берется до конца исходной строки. -
Unicode::Normalize(Utf8{Flags:AutoMap}) -> Utf8
-
Unicode::NormalizeNFD(Utf8{Flags:AutoMap}) -> Utf8
-
Unicode::NormalizeNFC(Utf8{Flags:AutoMap}) -> Utf8
-
Unicode::NormalizeNFKD(Utf8{Flags:AutoMap}) -> Utf8
-
Unicode::NormalizeNFKC(Utf8{Flags:AutoMap}) -> Utf8
Вышеперечисленные функции приводят переданную utf-8 строку в одну из нормальных форм.
-
Unicode::Translit(Utf8{Flags:AutoMap}, [String?]) -> Utf8
Транслитерирует в латинский алфавит слова переданной строки, целиком состоящие из символов алфавита языка, переданного вторым аргументом. Если язык не указан, то транслитерация ведется с русского. Доступные языки: "kaz", "rus", "tur", "ukr".
-
Unicode::LevensteinDistance(Utf8{Flags:AutoMap}, Utf8{Flags:AutoMap}) -> Uint64
Вычисляет расстояние Левенштейна для переданных строк.
-
Unicode::Fold(Utf8{Flags:AutoMap}, [Language:String?, DoLowerCase:Bool?]) -> Utf8
Выполняет case folding для переданной строки.
Language
задается по тем же правилам, что и вUnicode::Translit()
;DoLowerCase
приводит строку к нижнему регистру, по умолчаниюtrue
. -
Unicode::ReplaceAll(Utf8{Flags:AutoMap}, Utf8, Utf8) -> Utf8
Aргументы:
input
,find
,replacement
. Заменяет все вхождения строкиfind
вinput
наreplacement
. -
Unicode::ReplaceFirst(Utf8{Flags:AutoMap}, Utf8, Utf8) -> Utf8 -- аргументы: input, find, replacement
Aргументы:
input
,findSymbol
,replacementSymbol
. Заменяет первое вхождение символаfindSymbol
вinput
наreplacementSymbol
. Символ не может быть суррогатной парой. -
Unicode::ReplaceLast(Utf8{Flags:AutoMap}, Utf8, Utf8) -> Utf8 -- аргументы: input, find, replacement
Aргументы:
input
,findSymbol
,replacementSymbol
. Заменяет последнее вхождение символаfindSymbol
вinput
наreplacementSymbol
. Символ не может быть суррогатной парой. -
Unicode::RemoveAll(Utf8{Flags:AutoMap}, Utf8) -> Utf8
Второй аргумент интерпретируется как неупорядоченный набор символов для удаления. Удаляются все вхождения.
-
Unicode::RemoveFirst(Utf8{Flags:AutoMap}, Utf8) -> Utf8
Второй аргумент интерпретируется как неупорядоченный набор символов для удаления. Удаляется первое вхождение.
-
Unicode::RemoveLast(Utf8{Flags:AutoMap}, Utf8) -> Utf8
Второй аргумент интерпретируется как неупорядоченный набор символов для удаления. Удаляется последнее вхождение.
-
Unicode::Reverse(Utf8{Flags:AutoMap})
Разворачивает переданную строку.
Примеры
SELECT Unicode::Fold("Eylül", "tur" AS Language); -- "eylul"
SELECT Unicode::GetLength("жніўня"); -- 6