Цитата K.A.V.:
${StrStrAdv}, на страничке документации по ней информации не мало и, нужно сесть, и хорошенько напрячь извилины »
|
Вот ещё пример использования
${StrStrAdv} , для тех кто не хочет напрягаться (я и сам такой

) :
Синтаксис :
${StrStrAdv} "ResultVar" "String" "SubString" "SearchDirection" "StrInclusionDirection" "IncludeSubString" "Loops" "CaseSensitive"
Код:

!include "StrFunc.nsh"
${StrStrAdv}
OutFile "StrStrAdv.exe"
Section
MessageBox MB_OK " Преобразуем строку:\
$\r$\n Раз пошли на дело я и Рабинович. Рабинович выпить захотел. Эх, Рабинович !\
$\r$\n используя различные ключи"
StrCpy $0 "Раз пошли на дело я и Рабинович. Рабинович выпить захотел. Эх, Рабинович !"
MessageBox MB_OK 'Например, оставим всё, что находится СЛЕВА от слова "Рабинович". Искать будем с НАЧАЛА строки\
$\r$\n Для этого устанавливаем :\
$\r$\n SubString: "Рабинович"\
$\r$\n SearchDirection: ">"\
$\r$\n StrInclusionDirection: "<"'
${StrStrAdv} $1 "$0" "Рабинович" ">" "<" "0" "0" "0"
MessageBox MB_OK "Получаем в переменной :\
$\r$\n $1"
MessageBox MB_OK 'Ищем "Рабинович" 2 раза с НАЧАЛА. (Т.е. пропускаем, оставляем 2х Рабиновичей)\
$\r$\n "Loops" установим "2"'
${StrStrAdv} $2 "$0" "Рабинович" ">" "<" "0" "2" "0"
MessageBox MB_OK "Получаем в переменной :\
$\r$\n $2"
MessageBox MB_OK 'Снова, оставим всё, что находится СЛЕВА от слова "Рабинович". Но искать будем с КОНЦА строки\
$\r$\n Для этого устанавливаем :\
$\r$\n SubString: "Рабинович"\
$\r$\n SearchDirection: "<" (сменили направление поиска)\
$\r$\n StrInclusionDirection: "<"'
${StrStrAdv} $3 "$0" "Рабинович" "<" "<" "0" "0" "0"
MessageBox MB_OK "Получаем в переменной :\
$\r$\n $3"
MessageBox MB_OK 'Ищем "Рабинович" с КОНЦА 2 раза. Т.е. "Loops" установим "2"'
${StrStrAdv} $4 "$0" "Рабинович" "<" "<" "0" "2" "0"
MessageBox MB_OK "Получаем в переменной :\
$\r$\n $4"
SectionEnd
От значения
IncludeSubString - 0 или 1 , зависит, будет ли SubString (это то, указанное в строке слово(сочетание), "от которго пляшем" - слева или справа от которого оставляем нужное нам)
добавлено к результирующему значению.
******************
(По этому же принципу работает и
${StrStr}, только с ограничением - оставляется только то, что находится
справа от SubString плюс сам SubString .
${StrStr} "ResultVar" "String" "SubString")
${StrStrAdv} - это ${StrStr} Advanced
******************
Значение
"CaseSensitive" - 0 или 1 - учитывать регистр или нет.
Если подстрока не найдена, то в переменную будет возвращена пустая строка .
Если подстрока пустая, то строка будет возвращена с флагом ошибки.
Если строка пустая, то будет возвращена пустая строка с флагом ошибки.