API StrComp - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
StrComp
Оглавление · Алфавитный указатель · BASIC built-ins
ClassicUO • Runtime API
Сравнивает две строки по ordinal-порядку UTF-16.
Точный синтаксис
StrComp(left:String, right:String) -> Integer
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
left— Левая строка.right— Правая строка.
Возвращает
Integer: -1, если left меньше right; 0 при точном равенстве; 1, если left больше right. Регистр учитывается; это не Boolean и не языковая сортировка.
Поведение
- Выполняется локально и не обращается к игровому серверу. Исходная строка не изменяется: результат нужно сохранить или передать дальше.
- Позиции и длины строк считаются в единицах UTF-16. Символ за пределами BMP, например emoji, занимает две единицы. Это не количество байтов UTF-8.
Примеры
Пример 1. Равные строки
# Равные строки
#
# Сравнивает две строки по ordinal-порядку UTF-16.
#
# Integer: -1, если left меньше right; 0 при точном равенстве; 1, если left больше right.
# Регистр учитывается; это не Boolean и не языковая сортировка.
SUB Main()
# Оба аргумента совпадают.
# Ожидаемый результат: 0. В result сохраняется результат выражения; Print только показывает его.
VAR result = StrComp('ore', 'ore')
UO.Print(CStr(result))
END SUB
Разбор параметров и выполнения:
- Оба аргумента совпадают.
- Ожидаемый результат: 0. В result сохраняется результат выражения; Print только показывает его.
Пример 2. Меньшая строка
# Меньшая строка
#
# Сравнивает две строки по ordinal-порядку UTF-16.
#
# Integer: -1, если left меньше right; 0 при точном равенстве; 1, если left больше right.
# Регистр учитывается; это не Boolean и не языковая сортировка.
SUB Main()
# Код a меньше кода b.
# Ожидаемый результат: -1. В result сохраняется результат выражения; Print только показывает
# его.
VAR result = StrComp('a', 'b')
UO.Print(CStr(result))
END SUB
Разбор параметров и выполнения:
- Код a меньше кода b.
- Ожидаемый результат: -1. В result сохраняется результат выражения; Print только показывает его.
Пример 3. Регистр важен
# Регистр важен
#
# Сравнивает две строки по ordinal-порядку UTF-16.
#
# Integer: -1, если left меньше right; 0 при точном равенстве; 1, если left больше right.
# Регистр учитывается; это не Boolean и не языковая сортировка.
SUB Main()
# Код маленькой a больше кода большой A.
# Ожидаемый результат: 1. В result сохраняется результат выражения; Print только показывает его.
VAR result = StrComp('a', 'A')
UO.Print(CStr(result))
END SUB
Разбор параметров и выполнения:
- Код маленькой a больше кода большой A.
- Ожидаемый результат: 1. В result сохраняется результат выражения; Print только показывает его.