API Chr - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
Chr
Оглавление · Алфавитный указатель · BASIC built-ins
ClassicUO • Runtime API
Создаёт строку по Unicode-коду.
Точный синтаксис
Chr(value:Integer) -> String
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
value— Код Unicode как Integer. Значения ниже 0 ограничиваются до 0, выше 0x10FFFF — до 0x10FFFF. Диапазон суррогатов 0xD800..0xDFFF не является допустимым кодом символа и вызывает ошибку.
Возвращает
String — один Unicode-символ: одна или две единицы UTF-16. Chr(0) содержит NUL, а не пустую строку. Для символов вне BMP ASC(Chr(value)) возвращает первый суррогат, не исходный полный код.
Поведение
- Выполняется локально и не обращается к игровому серверу. Исходная строка не изменяется: результат нужно сохранить или передать дальше.
- Позиции и длины строк считаются в единицах UTF-16. Символ за пределами BMP, например emoji, занимает две единицы. Это не количество байтов UTF-8.
Примеры
Пример 1. Латинская буква
# Латинская буква
#
# Создаёт строку по Unicode-коду.
#
# String — один Unicode-символ: одна или две единицы UTF-16. Chr(0) содержит NUL, а не пустую
# строку. Для символов вне BMP ASC(Chr(value)) возвращает первый суррогат, не исходный полный
# код.
SUB Main()
# value=65 — код A.
# Ожидаемый результат: строка A. В result сохраняется результат выражения; Print только
# показывает его.
VAR result = Chr(65)
UO.Print(CStr(result))
END SUB
Разбор параметров и выполнения:
- value=65 — код A.
- Ожидаемый результат: строка A. В result сохраняется результат выражения; Print только показывает его.
Пример 2. Кириллица
# Кириллица
#
# Создаёт строку по Unicode-коду.
#
# String — один Unicode-символ: одна или две единицы UTF-16. Chr(0) содержит NUL, а не пустую
# строку. Для символов вне BMP ASC(Chr(value)) возвращает первый суррогат, не исходный полный
# код.
SUB Main()
# value=0x0410 — кириллическая А, отличная от латинской A.
# Ожидаемый результат: строка А. В result сохраняется результат выражения; Print только
# показывает его.
VAR result = Chr(0x0410)
UO.Print(CStr(result))
END SUB
Разбор параметров и выполнения:
- value=0x0410 — кириллическая А, отличная от латинской A.
- Ожидаемый результат: строка А. В result сохраняется результат выражения; Print только показывает его.
Пример 3. Длина символа вне BMP
# Длина символа вне BMP
#
# Создаёт строку по Unicode-коду.
#
# String — один Unicode-символ: одна или две единицы UTF-16. Chr(0) содержит NUL, а не пустую
# строку. Для символов вне BMP ASC(Chr(value)) возвращает первый суррогат, не исходный полный
# код.
SUB Main()
# Chr создаёт emoji из двух единиц UTF-16; Len считает эти единицы.
# Ожидаемый результат: 2. В result сохраняется результат выражения; Print только показывает его.
VAR result = Len(Chr(0x1F600))
UO.Print(CStr(result))
END SUB
Разбор параметров и выполнения:
- Chr создаёт emoji из двух единиц UTF-16; Len считает эти единицы.
- Ожидаемый результат: 2. В result сохраняется результат выражения; Print только показывает его.