API mid - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

mid

Оглавление · Алфавитный указатель · BASIC built-ins

ClassicUO • Runtime API

Выделяет часть строки; у двух форм разное начало отсчёта.

Точный синтаксис

mid(value:String, start:Integer) -> String
mid(str:String, start:Integer, length:Integer) -> String

Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.

Параметры

  • value / str — Исходная строка.
  • start — В Mid(value,start) — позиция от 1; start<=1 начинает с первого символа. В Mid(str,start,length) — индекс от 0; отрицательный индекс даёт пустую строку.
  • length — Только для формы из трёх аргументов: число единиц UTF-16. <=0 даёт пустую строку, излишек ограничивается остатком текста.

Возвращает

String — часть текста. Двухаргументная форма возвращает остаток до конца, трёхаргументная — не более length единиц. За концом строки возвращается пустая строка. Удаление третьего аргумента меняет начало отсчёта индекса.

Поведение

  • Выполняется локально и не обращается к игровому серверу. Исходная строка не изменяется: результат нужно сохранить или передать дальше.
  • Позиции и длины строк считаются в единицах UTF-16. Символ за пределами BMP, например emoji, занимает две единицы. Это не количество байтов UTF-8.

Примеры

Пример 1. Остаток со второй позиции

# Остаток со второй позиции
#
# Выделяет часть строки; у двух форм разное начало отсчёта.
#
# String — часть текста. Двухаргументная форма возвращает остаток до конца, трёхаргументная — не
# более length единиц. За концом строки возвращается пустая строка. Удаление третьего аргумента
# меняет начало отсчёта индекса.

SUB Main()
    # Два аргумента: start=2 — второй символ, индекс от 1.
    # Ожидаемый результат: строка bcdef. В result сохраняется результат выражения; Print только
    # показывает его.

    VAR result = Mid('abcdef', 2)
    UO.Print(CStr(result))
END SUB

Разбор параметров и выполнения:

  • Два аргумента: start=2 — второй символ, индекс от 1.
  • Ожидаемый результат: строка bcdef. В result сохраняется результат выражения; Print только показывает его.

Пример 2. Три символа с индекса 2

# Три символа с индекса 2
#
# Выделяет часть строки; у двух форм разное начало отсчёта.
#
# String — часть текста. Двухаргументная форма возвращает остаток до конца, трёхаргументная — не
# более length единиц. За концом строки возвращается пустая строка. Удаление третьего аргумента
# меняет начало отсчёта индекса.

SUB Main()
    # Три аргумента: start=2 — третий символ, length=3.
    # Ожидаемый результат: строка cde. В result сохраняется результат выражения; Print только
    # показывает его.

    VAR result = Mid('abcdef', 2, 3)
    UO.Print(CStr(result))
END SUB

Разбор параметров и выполнения:

  • Три аргумента: start=2 — третий символ, length=3.
  • Ожидаемый результат: строка cde. В result сохраняется результат выражения; Print только показывает его.

Пример 3. Первый символ в совместимой форме

# Первый символ в совместимой форме
#
# Выделяет часть строки; у двух форм разное начало отсчёта.
#
# String — часть текста. Двухаргументная форма возвращает остаток до конца, трёхаргументная — не
# более length единиц. За концом строки возвращается пустая строка. Удаление третьего аргумента
# меняет начало отсчёта индекса.

SUB Main()
    # Трёхаргументная форма использует индекс 0; длина 1.
    # Ожидаемый результат: строка a. В result сохраняется результат выражения; Print только
    # показывает его.

    VAR result = Mid('abcdef', 0, 1)
    UO.Print(CStr(result))
END SUB

Разбор параметров и выполнения:

  • Трёхаргументная форма использует индекс 0; длина 1.
  • Ожидаемый результат: строка a. В result сохраняется результат выражения; Print только показывает его.