PosEx

Материал из UoPilot
Перейти к навигации Перейти к поиску

Описание

Возврат позиции подстроки в строке.

Синтаксис

set <имя_переменной> PosEx(<подстрока> <строка> [стартовая_позиция_поиска])

<имя_переменной> - имя переменной в которую будет помещён результат.
<подстрока> - искомая строка.
<строка> - строка, в которой происходит поиск.
[стартовая_позиция_поиска] - порядковый номер символа с которого начнется поиск (по умолчанию 1). Необязательный параметр.

Если искомая подстрока не найдена, то результат будет равен 0

Примеры

// Пример 1
set $s абвгдеёж
set #n posex(в $s) // #n = 3
set #n posex(я $s) // #n = 0
// Пример 2
set #m posex(ин машина) // #m = 4
// Пример 3
set #m1 posex(а машина) // #m1 = 2
set #m2 posex(а машина 3) // #m2 = 6
// Пример 4
set $a "мама мыла раму"
set $b "мыла"
set #pos PosEx($b $a 2) // #pos = 6. Слово Offset не пишите - оно игнорируется вместе с тем, что после него
msg #pos
// Пример 5
set $s Недавно Вася съел 15 яблок, обжора... // фраза в которой будем искать число яблок
set #еще_яблоки 3 // никто не знал об этих яблоках...
set $ws съел // левое от числа слово
set #wlen size ( $ws ) // длина левого_слова
set $w2 яблок // правое от числа слово

set #n1 posex($ws $s) // позиция в строке с которой начинается левое_слово
set #n2 posex($w2 $s) // позиция в строке с которой начинается правое_слово

if ( #n1 > 0) and ( #n2 > 0 ) // если оба слова были найдены, то будем доставать число...
    set #pos #n1 + #wlen // позиция в строке с которой начинается число
    set #len #n2 - #pos // длина числа в символах
    set $res copy($s #pos #len) // получаем из строки нужную нам подстроку с числом яблок
    set #всего_яблок $res + #еще_яблоки // считаем сколько всего слопано 
 
    msg Дятел: А ВАСЯ СЪЕЛ #всего_яблок ЯБЛОК!!! // бдительность- залог успеха
else
    msg Яблок никто не ел! // неправильные исходные данные часто спасают преступников )
end_if 
end_script

Смотрите также

Get word
Get number
Copy
Delete
Insert

История развития

2.23
Добавил функции для работы со строками:

'PosEx(SubStr String [Offset=1])'

Возвращает позицию подстроки <SubStr> в строке <String>, начиная поиск с позиции [Offset] (по умолчанию Offset=1).