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

InStrRev

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

ClassicUO • Runtime API

Ищет последнее вхождение подстроки.

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

InStrRev(value:String, search:String) -> Integer

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

Параметры

  • value — Исходная строка.
  • search — Искомая подстрока; сравнение учитывает регистр.

Возвращает

Integer — позиция последнего совпадения от 1; 0, если совпадения нет. Для пустого search возвращается Len(value)+1. Начальная позиция отдельным аргументом не поддерживается.

Поведение

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

Примеры

Пример 1. Последний разделитель

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

SUB Main()
    # Ищется последний / во всей строке.
    # Ожидаемый результат: 4. В result сохраняется результат выражения; Print только показывает его.

    VAR result = InStrRev('a/b/c', '/')
    UO.Print(CStr(result))
END SUB

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

  • Ищется последний / во всей строке.
  • Ожидаемый результат: 4. В result сохраняется результат выражения; Print только показывает его.

Пример 2. Отсутствующая подстрока

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

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

    VAR result = InStrRev('abc', 'x')
    UO.Print(CStr(result))
END SUB

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

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

Пример 3. Совпадение с учётом регистра

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

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

    VAR result = InStrRev('AaA', 'a')
    UO.Print(CStr(result))
END SUB

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

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