Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
  • Оглавление
  • Начало работы
    • Обзор
    • Создание базы данных
    • Аутентификация
    • Интерфейс командной строки YDB CLI
    • Язык запросов YQL
    • YDB SDK
    • Самостоятельное развертывание
      • Обзор
      • Docker
      • Бинарный файл
      • Minikube
    • Полезные ссылки
    • Document API, совместимый с Amazon DynamoDB
      • Настройка инструментов AWS
      • Работа с данными через HTTP-интерфейс
      • Работа с AWS CLI
        • Обзор
        • Создание таблицы
        • Добавление данных в таблицу
        • Чтение данных из таблицы
        • Обновление данных
        • Выборка данных
        • Удаление созданных ресурсов
      • Работа с AWS SDK
        • Обзор
        • Создание таблицы
        • Загрузка данных в таблицу
        • Управление записями в таблице
          • Создание записи
          • Чтение записи
          • Обновление записи
          • Удаление записи
        • Поиск и извлечение данных
        • Удаление таблицы
  • Практические руководства
    • Развертывание веб-приложения
    • Разработка Slack-бота
    • Подключение к YDB из функции Yandex Cloud Functions на Python
    • Подключение к базе данных YDB из функции Yandex Cloud Functions на Node.js
    • Конвертация видео в GIF на Python
    • Разработка навыка Алисы и сайта с авторизацией
  • Концепции
    • Обзор
    • Термины и определения
    • Соединение с БД и аутентификация
    • Модель данных и схема
    • Режимы работы Serverless и Dedicated
    • Транзакции
    • Вторичные индексы
    • Time to Live (TTL)
    • Скан запросы
    • Ограничения базы данных
    • Кластер YDB
      • Обзор
      • Общая схема YDB
      • Дисковая подсистема кластера
    • Квоты и лимиты
  • Пошаговые инструкции
    • Обзор
    • Переименование
    • Использование плана запроса и AST
    • Чтение и запись данных
    • Работа со вторичными индексами
  • Рекомендации
    • Обзор
    • Выбор первичного ключа для максимальной производительности
    • Вторичные индексы
    • Постраничный вывод
    • Загрузка больших объемов данных
    • Использование таймаутов
  • Управление базами данных
    • Обзор
    • Облачная консоль управления
      • Обзор
      • Создание, изменение, удаление баз данных
      • Таблицы и директории
      • Управление доступом
    • Интерфейс командной строки YC CLI
    • Резервное копирование и восстановление
    • Диагностика
      • Обзор
      • Системные таблицы
      • Мониторинг
  • Правила тарификации
    • Обзор
    • Бессерверный режим
      • Правила тарификации для бессерверного режима
      • Стоимость запроса для YQL
      • Стоимость запроса для Document API
      • Стоимость запроса для специальных API
    • Режим с выделенными инстансами
  • HTTP API, совместимый с Amazon DynamoDB
    • Все методы
    • Actions
      • BatchGetItem
      • BatchWriteItem
      • CreateTable
      • DeleteItem
      • DeleteTable
      • DescribeTable
      • DescribeTimeToLive
      • GetItem
      • ListTables
      • PutItem
      • Query
      • Scan
      • TransactGetItems
      • TransactWriteItems
      • UpdateItem
      • UpdateTimeToLive
    • Общие ошибки
  • YQL
    • Обзор
    • Типы данных
      • Обзор
      • Простые
      • Опциональные
      • Контейнеры
      • Специальные
      • Преобразования типов
      • Текстовое представление типов данных
      • JSON
    • Синтаксис
      • Обзор
      • Лексическая структура
      • Выражения
      • ACTION
      • ALTER TABLE
      • CREATE TABLE
      • DECLARE
      • DELETE
      • DISCARD
      • DROP TABLE
      • GROUP BY
      • FLATTEN
      • INSERT
      • INTO RESULT
      • JOIN
      • PRAGMA
      • REPLACE
      • SELECT
      • UPDATE
      • UPSERT
      • VALUES
      • WINDOW
      • Неподдерживаемые конструкции
    • Встроенные функции
      • Обзор
      • Базовые
      • Агрегатные
      • Оконные
      • Для работы со списками
      • Для работы со словарями
      • Для работы со структурами
      • Для работы с типами
      • Для работы с JSON
      • Библиотеки C++
        • Обзор
        • Hyperscan
        • Pcre
        • Pire
        • Re2
        • String
        • Unicode
        • DateTime
        • Url
        • Ip
        • Yson
        • Digest
        • Math
        • Histogram
    • Туториал YQL
      • Обзор
      • Создание таблицы
      • Добавление данных в таблицу
      • Выборка данных из всех колонок
      • Выборка данных из определенных колонок
      • Сортировка и фильтрация
      • Агрегирование данных
      • Дополнительные условия выборки
      • Объединение таблиц с помощью JOIN
      • Вставка и модификация данных с помощью REPLACE
      • Вставка и модификация данных с помощью UPSERT
      • Вставка данных с помощью INSERT
      • Обновление данных с помощью UPDATE
      • Удаление данных
      • Добавление и удаление колонок
      • Удаление таблицы
  • Работа с YDB CLI
    • Обзор
    • Установка
    • Структура команд YDB CLI
    • Сервисные команды
    • Соединение с БД и аутентификация
    • Глобальные параметры
    • Работа со схемой БД
      • Список объектов
      • Информация об объекте
      • Директории
      • Вторичные индексы
      • Переименование таблиц
    • Работа с данными
      • Выполнение запроса к данным
      • План исполнения запроса
      • Потоковое чтение таблицы
      • Скан запросы
    • Загрузка и выгрузка данных
      • Обзор
      • Файловая структура выгрузки
      • Выгрузка в файловую систему
      • Загрузка из файловой системы
      • Соединение и аутентификация с S3
      • Выгрузка в S3
      • Загрузка из S3
      • Импорт данных из файла в существующую таблицу
    • Управление профилями
      • Обзор
      • Создание профиля
      • Использование профиля в запросах
      • Получение информации о профиле
      • Удаление профиля
      • Активированный профиль
    • Информационные сервисы
      • Список эндпоинтов
      • Проверка аутентификации
    • Нагрузочное тестирование
      • Обзор
      • Stock нагрузка
  • Работа с YDB SDK
    • Обзор
    • Установка
    • Аутентификация
    • Тестовое приложение
      • Обзор
      • C++
      • C# (.NET)
      • Go
      • Java
      • Node.js
      • PHP
      • Python
      • Архив
        • Go v1
        • Go v2
    • Обработка ошибок в API
    • Рецепты кода
      • Обзор
      • Аутентификация
        • Обзор
        • С помощью токена
        • Анонимная
        • Файл сервисного аккаунта
        • Сервис метаданных
        • С помощью переменных окружения
        • С помощью логина и пароля
      • Балансировка
        • Обзор
        • Равномерный случайный выбор
        • Предпочитать ближайший дата-центр
        • Предпочитать зону доступности
      • Выполнение повторных запросов
      • Диагностика проблем
        • Обзор
        • Включить логирование
        • Подключить метрики в Prometheus
        • Подключить трассировку в Jaeger
      • Установить размер пула сессий
      • Вставка данных
      • Пакетная вставка данных
  • Управление кластером
    • Обзор
    • Kubernetes
      • Обзор
      • Развертывание в Yandex Managed Service for Kubernetes
      • Развертывание в AWS Elastic Kubernetes Service
      • Эксплуатация
    • Вручную
      • Локальная установка
      • Конфигурация кластера
      • Обслуживание дисковой подсистемы кластера
        • Обзор
        • Способы предотвращения выхода за модель отказа
        • Балансировка нагрузки на диски
        • Способы освобождения места на физических устройствах
        • Расширение кластера
        • Добавление групп хранения
        • Безопасные рестарт и выключение узлов
        • Включение/выключение SelfHeal
        • Включение/выключение Scrubbing
        • Перевоз VDisk'ов
        • Изменение конфигураций через CMS
        • Изменение конфигурации акторсистемы
    • Встроенный UI
      • Обзор
      • YDB Monitoring
      • Hive web-viewer
      • Обзор соединений
      • Логи
      • Графики
    • Системные таблицы
  • Вопросы и ответы
    • Обзор
    • Общие вопросы
    • Ошибки
    • YQL
    • Serverless
    • Все вопросы на одной странице
  • Публичные материалы
  1. YQL
  2. Встроенные функции
  3. Библиотеки C++
  4. Unicode

Unicode

Статья создана
Yandex.Cloud

    Функции для работы с 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). Суррогатные пары учитываются как один символ.

    SELECT Unicode::GetLength("жніўня"); -- 6
    
    • Unicode::Find(string:Utf8{Flags:AutoMap}, subString:Utf8, [pos:Uint64?]) -> Uint64?

    • Unicode::RFind(string:Utf8{Flags:AutoMap}, subString:Utf8, [pos:Uint64?]) -> Uint64?

      Поиск первого(RFind - последнего) вхождения подстроки в строку начиная с позиции pos. Возвращает позицию первого символа от найденной подстроки, в случае неуспеха возвращается Null.

    SELECT Unicode::Find("aaa", "bb"); -- Null
    
    • Unicode::Substring(string:Utf8{Flags:AutoMap}, from:Uint64?, len:Uint64?) -> Utf8

      Возвращает подстроку от string начиная с символа from длиной в len символов. Если аргумент len опущен, то подстрока берется до конца исходной строки.
      В случае from больше длины исходной строки, возвращается пустая строка ""

    select Unicode::Substring("0123456789abcdefghij", 10); -- "abcdefghij"
    
    • Функции Unicode::Normalize... приводят переданную utf-8 строку в одну из нормальных форм:

      • Unicode::Normalize(Utf8{Flags:AutoMap}) -> Utf8 -- NFC
      • Unicode::NormalizeNFD(Utf8{Flags:AutoMap}) -> Utf8
      • Unicode::NormalizeNFC(Utf8{Flags:AutoMap}) -> Utf8
      • Unicode::NormalizeNFKD(Utf8{Flags:AutoMap}) -> Utf8
      • Unicode::NormalizeNFKC(Utf8{Flags:AutoMap}) -> Utf8
    • Unicode::Translit(string:Utf8{Flags:AutoMap}, [lang:String?]) -> Utf8

      Транслитерирует в латинский алфавит слова переданной строки, целиком состоящие из символов алфавита языка, переданного вторым аргументом. Если язык не указан, то транслитерация ведется с русского. Доступные языки: "kaz", "rus", "tur", "ukr".

    select Unicode::Translit("Тот уголок земли, где я провел"); -- "Tot ugolok zemli, gde ya provel"
    
    • Unicode::LevensteinDistance(stringA:Utf8{Flags:AutoMap}, stringB:Utf8{Flags:AutoMap}) -> Uint64

      Вычисляет расстояние Левенштейна для переданных строк.

    • Unicode::Fold(Utf8{Flags:AutoMap}, [ Language:String?, DoLowerCase:Bool?, DoRenyxa:Bool?, DoSimpleCyr:Bool?, FillOffset:Bool? ]) -> Utf8

      Выполняет case folding для переданной строки.
      Параметры:

      • Language задается по тем же правилам, что и в Unicode::Translit()
      • DoLowerCase приводит строку к нижнему регистру, по умолчанию true
      • DoRenyxa приводить символы с диокрифами к аналогичным латинским символам, по умолчанию true
      • DoSimpleCyr приводить кирилические символы с диокрифами к аналогичным латинским символам, по умолчанию true
      • FillOffset параметр не используется
    select Unicode::Fold("Kongreßstraße",  false AS DoSimpleCyr, false AS DoRenyxa); -- "kongressstrasse"
    select Unicode::Fold("ҫурт"); -- "сурт"
    SELECT Unicode::Fold("Eylül", "Turkish" AS Language); -- "eylul"
    
    • Unicode::ReplaceAll(input:Utf8{Flags:AutoMap}, find:Utf8, replacement:Utf8) -> Utf8

    • Unicode::ReplaceFirst(input:Utf8{Flags:AutoMap}, find:Utf8, replacement:Utf8) -> Utf8

    • Unicode::ReplaceLast(input:Utf8{Flags:AutoMap}, find:Utf8, replacement:Utf8) -> Utf8

      Заменяет все/первое/последнее вхождения строки find в input на replacement.

    • Unicode::RemoveAll(input:Utf8{Flags:AutoMap}, symbols:Utf8) -> Utf8

    • Unicode::RemoveFirst(input:Utf8{Flags:AutoMap}, symbols:Utf8) -> Utf8

    • Unicode::RemoveLast(input:Utf8{Flags:AutoMap}, symbols:Utf8) -> Utf8

      Удаляются все/первое/последнее вхождения символов в наборе symbols из input. Второй аргумент интерпретируется как неупорядоченный набор символов для удаления.

    select Unicode::ReplaceLast("absence", "enc", ""); -- "abse"
    select Unicode::RemoveAll("abandon", "an"); -- "bdo"
    
    • Unicode::ToCodePointList(Utf8{Flags:AutoMap}) -> List<Uint32>

      Разбить строку на unicode'ую последовательность codepoint'ов.

    • Unicode::FromCodePointList(List<Uint32>{Flags:AutoMap}) -> Utf8

      Сформировать unicode строку из codepoint'ов.

    select Unicode::ToCodePointList("Щавель"); -- [1065, 1072, 1074, 1077, 1083, 1100]
    select Unicode::FromCodePointList(AsList(99,111,100,101,32,112,111,105,110,116,115,32,99,111,110,118,101,114,116,101,114)); -- "code points converter"  
    
    • Unicode::Reverse(Utf8{Flags:AutoMap}) -> Utf8

      Перевернуть строку.

    • Unicode::ToLower(Utf8{Flags:AutoMap}) -> Utf8

    • Unicode::ToUpper(Utf8{Flags:AutoMap}) -> Utf8

    • Unicode::ToTitle(Utf8{Flags:AutoMap}) -> Utf8

      Привести регистр строки к ВЕРХНЕМУ, нижнему или Заглавному виду.

    • Unicode::SplitToList( string:Utf8?, separator:Utf8, [ DelimeterString:Bool?, SkipEmpty:Bool?, Limit:Uint64? ]) -> List<Utf8>

      Разбиение строки на подстроки по разделителю.
      string -- исходная строка
      separator -- разделитель
      Параметры:

      • DelimeterString:Bool? — считать разделитель строкой (true, по умолчанию) или набором символов "любой из" (false)
      • SkipEmpty:Bool? - пропускать ли пустые строки в результате, по умолчанию false
      • Limit:Uint64? - ограничение на число извлекаемых компонент, по умолчанию не ограничено; необработанный суффикс оригинальной строки возвращается последним элементом при превышении лимита
    • Unicode::JoinFromList(List<Utf8>{Flags:AutoMap}, separator:Utf8) -> Utf8

      Конкатенация списка строк через separator в единую строку.

    select Unicode::SplitToList("One, two, three, four, five", ", ", 2 AS Limit); -- ["One", "two", "three, four, five"]
    select Unicode::JoinFromList(["One", "two", "three", "four", "five"], ";"); -- "One;two;three;four;five"
    
    • Unicode::ToUint64(string:Utf8{Flags:AutoMap}, [prefix:Uint16?]) -> Uint64

      Конвертация из строки в число.
      Второй опциональный аргумент задает систему счисления, по умолчанию 0 - автоматическое определение по префиксу.
      Поддерживаемые префиксы : 0x(0X) - base-16, 0 - base-8. Система по-умолчанию - base-10.
      Знак '-' перед числом интерпретируется как в беззнаковой арифметике языка C, например -0x1 -> UI64_MAX.
      В случае наличия в строке некорректных символов или выхода числа за границы ui64 функция завершается с ошибкой.

    • Unicode::TryToUint64(string:Utf8{Flags:AutoMap}, [prefix:Uint16?]) -> Uint64?

      Аналогично функции Unicode::ToUint64(), но вместо ошибки возвращает Null.

    select Unicode::ToUint64("77741"); -- 77741
    select Unicode::ToUint64("-77741"); -- 18446744073709473875
    select Unicode::TryToUint64("asdh831"); -- Null
    

    Была ли статья полезна?

    Language / Region
    © 2022 ООО «Яндекс.Облако»