Нужна помощь в написании скрипта? Close

Вы можете задать любой вопрос по программе Autohotkey в нашей группе Вконтакте. Если решение требует более высокой квалификации- можно обратиться непосредственно ко мне.

ВконтактеГруппа Вконтакте Электронная почтаЭлектронная почта Личная страницаСимаков Яков ВК
home icon Все разделы
comunity icon Нужна помощь?

If var [not] in/contains MatchList -Autohotkey

Проверяет, содержит ли переменная какую-либо строку из списка.

if Var in MatchList if Var not in MatchList if Var contains MatchList if Var not contains MatchList

Параметры

Var Имя переменной, чьё содержимое будет просматриваться. При операторе "in" требуется точное совпадение переменной с одной из строк списка. При операторе "contains" переменная может содержать строку из списка в качестве своей подстроки.
MatchList Разделённый запятыми список строк, каждая из которых будет искаться в Var. Пробелы и табуляции до и после запятых имеют значение, так как будут считаться частью искомой строки. Например, если MatchList задан как "ABC , XYZ", то Var должна содержать либо ABC с пробелом на конце, либо XYZ с пробелом в начале.

Две запятые подряд трактуются как одна литеральная запятая. Например, в следующем примере первой строкой списка будет считаться "string1," (с запятой на конце): If Var In string1,,,string2. Точно так же следующий список содержит только одну строку, внутри которой стоит одна запятая: If Var In single,,item. Чтобы включить в список пустую строку, начните его с запятой, как в этом примере: If Var In ,string1,string2 (при операторе "contains" поиск пустой строки всегда будет удачным, поскольку любая строка содержит пустую строку).

Поскольку строки, составляющие MatchList, не трактуются как отдельные параметры, весь список может содержаться в одной переменной. Фактически, он должен содержаться в переменной целиком либо частично, если его длина превышает 16383 символа, поскольку это максимально допустимая длина строки кода в скрипте. Например, MatchList мог бы быть задан как %List1%,%List2%,%List3%, где каждая из переменных в свою очередь содержит большой список строк для поиска.

Если какая-то из строк списка окажется длиннее 16384 знаков, символы после этого лимита будут считаться уже следующей строкой. Поэтому лучше избегать включения в список столь длинных строк.

Примечания

Сравнение всегда является алфавитным, а не числовым. Например, строка "11" не совпадёт со строкой "11.0".

Оператор "contains" ищет так же, как команды IfInString/IfNotInString, за исключением того, что поддерживается список искомых строк (любая из которых может привести к совпадению).

Чтобы сделать поиск чувствительным к регистру, можно использовать команду StringCaseSense On.

Прим. переводчика: для русских букв поиск по умолчанию чувствителен к регистру. Чтобы сделать его нечувствительным, нужно предварительно выполнить команду StringCaseSense, Locale. Это поможет, если локаль текущего пользователя — русская.

Если MatchList длинный, он может быть разбит на более короткие строки при помощи секции продолжения, что может улучшить читабельность скрипта.

Операторы "between", "is", "in" и "contains" не поддерживаются в выражениях.

Примеры

if var in exe,bat,com MsgBox Судя по расширению, это исполнимый файл. if var in 1,2,3,5,7,11 ; Избегайте использовать пробелы в списке. MsgBox %var% является небольшим простым числом. if var contains 1,3 ; Заметьте, что значения сравниваются как строки, а не числа. MsgBox Var содержит цифру 1 или 3 (Var может быть 1, 3, 10, 21, 23, и т.п.) if var in %MyItemList% MsgBox %var% есть в списке. InputBox, UserInput, Введите ДА или НЕТ if UserInput not in ДА,НЕТ MsgBox Ваш ввод неверен. WinGetTitle, active_title, A if active_title contains Список адресов.txt,Список клиентов.txt MsgBox Активно одно из нужных окон. if active_title not contains metapad,Блокнот MsgBox Но файл открыт не в Metapad и не в Блокноте.
Автор перевода: YMP
Настоящее имя переводчика: Юрий Попов
Источник: http://www.script-coding.com/AutoHotkey/If_var_%20in.html
Под редакцией ahk-wiki.ru от 21.08.19