Описание функции


StringInStr

Проверяет вхождение подстроки в указанную строку.

StringInStr('string','substring'[,casesense=0[,occurrence=1[,start=1[,count]]]])

Параметры

string Проверяемая строка.
substring Подстрока для поиска.
casesense [необязательный] Флаг установки чувствительности к регистру написания.
0 = (по умолчанию) не учитывать регистр, используется локальный язык
1 = учитывать регистр
2 = не учитывать регистр, используется основное / быстрое сравнение
occurrence [необязательный] Номер искомого вхождения подстроки в строку. Используйте отрицательное значение параметра для поиска справа. По умолчанию 1 (поиск первого вхождения).
start [необязательный] Начальная позиция поиска, отсчёт от 1.
count [необязательный] Количество символов для поиска. Это ограничивает поиск на участке полной строки. См. примечания.

Возвращаемое значение

Успех:Возвращает позицию найденной подстроки.
Ошибка:Возвращает 0, если подстрока не найдена.

Примечания

Нумерация символов в строке начинается с 1.

Параметр count должен быть больше длины искомой подстроки. Параметр count (в сочетании с параметром start) ограничивает поиск подстроки в полной строке. Следующие два выражения работают одинаково:
StringInStr('the~~string~~to~~search','string',0,1,1,11)
StringInStr(StringMid('the~~string~~to~~search',1,11),'string')

Функцию можно подключить через команду exect

См. также

StringRegExp, StringCompare, StringLeft, StringRight, StringTrimLeft, StringTrimRight, StringLen, StringMid, StringSplit

Примеры:
 Как создать кнопку?

StringInStr('Это~~строка','ОКА')

exect=StringInStr('Это~~строка','ОКА') GLOBALEXECT<a> ;; проверяет вхождение подстроки в указанную строку

exect=$var_s=ClipGet()||$var_i=StringInStr('$var_s','\')||MsgBox(4096,'Результат','$var_i') GLOBALEXECT<a> ;; пример проверки нахождения в буфере обмена пути или ссылки, проверяется символ "\" , переменная $var_i либо 0 либо число больше 0

exect=$var_s=ClipGet()||$var_i=StringInStr('$var_s','\') <IF> $var_i = 0 <THEN> brwsr=$var_s <ELSE> openf=$var_s||x||explorer<open> <ENDIF> ;; открыть в зависимости содержимого буфера обмена: если ссылка, то в браузере, если путь то в редакторе

exect=$var_a=StringSplit(StringReplace('??%%COMMANDER_PATH%%\TCIMG.exe?~~?openup??|??%%COMMANDER_PATH%%\Utilities\TotalCom\ChoiceEditor\ChoiceEditor.exe??','?',Chr(34)),'|')||$var_sc=EnvGet('COMMANDER_INI')||$var_sp=IniRead('$var_sc','Configuration','Editor',Null)||$var_is=StringInStr('$var_sp','TCIMG')?2:1||IniWrite('$var_sc','Configuration','Editor',$var_a[$var_is]) rstart ;; переключение программы просмотра по F4 с перезагрузкой

exect=$var_i=(StringInStr(FileGetAttrib('%P%N'),'D')~~AND~~FileExists('%P%N'))?1:0||_ViewValues($var_i) ;; проверка: возвращает 1, если под курсором папка, 0 - если файл

exect=$var_i=StringInStr('|jpg|gif|png|','|%E|')?_CmdCm('infbx=InfoBox_TEST1'):_CmdCm('infbx=InfoBox_TEST2') ;; пример проверки 3-х расширений, если под курсором расширение совпадает, то выдаётся сообщение №1, если нет - сообщение №2
exect=$var_ext=##<info=o71%P%N//>||$var_i=StringInStr('ini|db|dll','$var_ext')?_CmdCm('infbx=InfoBox_TEST1'):_CmdCm('infbx=InfoBox_TEST2') ;; пример условия проверки расширения файла под курсором

forpgs slist=[tc=AM] <FOR> 1 <TO> GLOBALSLIST<0> exect=$var_ext=##<info=o71GLOBALSLIST<:INDEX:>>||$var_i=StringInStr('ini|db|dll','$var_ext')?_CmdCm('rends=x¦¦##rndm<3-|10><¤>wends=@<**info=o75GXLOBALSLIST<:INDEX:>><**info=o73GXLOBALSLIST<:INDEX:>>-GXLOBALRENDS<1>.zip<¤>start=RAR¦¦-IBCK¦¦a¦¦-m5¦¦-ms¦¦-cfg-¦¦-s¦¦-rr3p¦¦GXLOBALWENDS<1>¦¦<**info=o73GXLOBALSLIST<:INDEX:>>¦¦&&wait<¤>renmm=GXLOBALWENDS<1>¦¦##<**info=f1GXLOBALWENDS<1>|1>'):_CmdCm('start=RAR¦¦-IBCK¦¦a¦¦-m5¦¦-ms¦¦-cfg-¦¦-s¦¦-rr3p¦¦<**info=o75GXLOBALSLIST<:INDEX:>><**info=o73GXLOBALSLIST<:INDEX:>>-<info=s47>.zip¦¦<**info=o73GXLOBALSLIST<:INDEX:>>¦¦&&wait') <NEXT> tcimg=$cm540 ;; упаковать все файлы с расширением ini, db или dll в отдельный архив с именем хеш суммы, а остальные файлы в архивы с исходным именем + дата в активную панель и 3% на восстановление
exect=$var_n=3||$var_i=StringInStr('1|2|5',$var_n)?_CmdCm('infbx=InfoBox_TEST1'):_CmdCm('infbx=InfoBox_TEST2') ;; пример проверки условий с помощью

sends=>s85AkelPad.exe <IF> Execute(StringInStr('GLOBALSENDS<1>','Name.txt')) > 0 <THEN> infbx=InfoBox_TEST1 <ENDIF> ;; если в AkelPad активный документ Name.txt, то выдать сообщение

<IF> Execute(StringInStr('<info=s85AkelPad.exe>','Name.txt')) > 0 <THEN> infbx=InfoBox_TEST1 <ENDIF> ;; если в AkelPad активный документ Name.txt, то выдать сообщение

sends=4 <IF> Execute(StringInStr('1|2|4|5','GLOBALSENDS<1>')) > 0 <THEN> GLOBALSENDS<a> <ENDIF> ;; пример проверки сразу нескольких значений

sends=2 <IF> Execute(StringInStr('|2|222|24|82|','|GLOBALSENDS<1>|')) > 0 <THEN> GLOBALSENDS<a> <ENDIF> ;; пример проверки сразу нескольких значений

arr2d=%WL||46|0|StringInStr(FileGetAttrib('::'),'D')>0 GLOBALARR2D<a> ;; из выделенных объектов получить только папки


© Аверин Андрей для Total Commander Image  Averin-And@yandex.ru