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

InStr

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

ClassicUO • Runtime API

Ищет первое вхождение подстроки с заданной позиции.

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

InStr(value:String, search:String) -> Integer
InStr(start:Integer, value:String, search:String) -> Integer

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

Параметры

  • value — Строка, в которой выполняется поиск.
  • search — Искомый текст; регистр учитывается.
  • start — Только в трёхаргументной форме — первый аргумент, позиция от 1 включительно. Значения <=1 начинают с первого символа. В двухаргументной форме поиск начинается с 1.

Возвращает

Integer — позиция найденной подстроки от 1; 0 означает отсутствие совпадения или start за концом. Пустой search совпадает в стартовой позиции, в том числе после последнего символа при start=Len(value)+1.

Поведение

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

Примеры

Пример 1. Найти разделитель

# Найти разделитель
#
# Ищет первое вхождение подстроки с заданной позиции.
#
# Integer — позиция найденной подстроки от 1; 0 означает отсутствие совпадения или start за
# концом. Пустой search совпадает в стартовой позиции, в том числе после последнего символа при
# start=Len(value)+1.

SUB Main()
    # value="ore:iron", search=":"; поиск с начала.
    # Ожидаемый результат: 4. В result сохраняется результат выражения; Print только показывает его.

    VAR result = InStr('ore:iron', ':')
    UO.Print(CStr(result))
END SUB

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

  • value="ore:iron", search=":"; поиск с начала.
  • Ожидаемый результат: 4. В result сохраняется результат выражения; Print только показывает его.

Пример 2. Пропустить первое совпадение

# Пропустить первое совпадение
#
# Ищет первое вхождение подстроки с заданной позиции.
#
# Integer — позиция найденной подстроки от 1; 0 означает отсутствие совпадения или start за
# концом. Пустой search совпадает в стартовой позиции, в том числе после последнего символа при
# start=Len(value)+1.

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

    VAR result = InStr(3, 'ababa', 'a')
    UO.Print(CStr(result))
END SUB

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

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

Пример 3. Учесть регистр

# Учесть регистр
#
# Ищет первое вхождение подстроки с заданной позиции.
#
# Integer — позиция найденной подстроки от 1; 0 означает отсутствие совпадения или start за
# концом. Пустой search совпадает в стартовой позиции, в том числе после последнего символа при
# start=Len(value)+1.

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

    VAR result = InStr('Iron', 'iron')
    UO.Print(CStr(result))
END SUB

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

  • Поиск сравнивает текст ordinal, без смены регистра.
  • Ожидаемый результат: 0. В result сохраняется результат выражения; Print только показывает его.