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 только показывает его.