Indexof

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

Описание

Функция IndexOf предназначена для поиска строки в указанном массиве и возвращает в другой массив индексы найденных элементов. Или же возвращает номер первой строки с найденным элементом (в зависимости от использованного синтаксиса).
По-умолчанию ищет точное совпадение, регистронезависимо.

Синтаксис

Привязка к окну: нет.
Работа со свернутым окном: да.

set %result indexOf ( %arr [noabs] [case] [[startRow [EndRow]] count] (text) )
или
set #res indexOf ( %arr [noabs] [case] [[startRow [EndRow]] count] (text) )

Здесь:
%result - массив-результат, в который записываются индексы найденных элементов
#res - номер первой строки, в которой найден элемент с искомым текстом. (может быть указан только один из двух вариантов: %result или #res )
%arr - массив, в котором ищем
noabs - если указано, то ищем подстроку; иначе- ищем абсолютное совпадение (без учёта регистра)
case - если указано, то при сравнении учитывается регистр символов; иначе - не учитывается
count - максимальное число найденых элементов. Если > 0, то ищем в направлении "с начала", если < 0, то ищем в направлении "с конца". Если не указан, то ищем "все". Этот параметр имеет приоритет в порядке распознавания, над начальной и конечной позицией поиска.
startRow - номер строки, которой начинается поиск (по умолчанию= 1)
endRow - номер строки, которой заканчиваем поиск (по умолчанию= последняя)
count - какое по порядку вхождение нужно искать
text - текст, который нужно найти

Ищет по столбцам. возвращает адреса найденных элементов в формате 'строка|столбец/'. пример: '3|7/3|8/4|7/4|8/'. Его хорошо понимает команда 'set' для присваивания элементов массива пачкой. Если ничего не найдено, то вернет пустую строку. Если в качестве приемника указана целая переменная ('set #e indexOf...'), то возвращаем номер только одной строки. Причем 'count' указывает какое по порядку вхождение нужно искать. Если элемент с указанным номером не найден, то результат -1.

Примеры

// запишем начальные данные в массив %a
set %a[1 1] вася50фф
set %a[2 1] андрей50фф
set %a[3 1] вася20фйй
set %a[1 2] вася50фф
set %a[2 2] андрей50фф
set %a[3 2] вася20фйй

set %result indexOf ( %a noabs (вася) ) // в массиве %a ищем вхождение строки 'вася' без учёта регистра
set #sz size(%result) // сохраним в переменной #sz количество строк массива #result
for #i 1 #sz // в цикле отобразим индексы всех найденных элементов (хранящиеся в массиве %result)
  msg Найдено: %result[#i 1] %result[#i 2] // отобразит поочередно:  1 1, затем 3 1, затем 1 2, затем 3 2
end_for
end_script

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

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

2.30
добавил поиск строки в массиве. по-умолчанию ищет точное совпадение, регистронезависимо