Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также саму программу AutoHotkey и проблемы её использования)

Проект перевода документации AutoHotkey: перечень переведённых статей и статей в работе.

Оригинал статьи в AutoHotkey.chm: "If var [not] in value1,value2,... If var [not] contains value1,value2,...", в содержании - "String Management" - "If var [not] in/contains MatchList", v1.0.48.03.

Ник переводчика: YMP.

Настоящее имя переводчика: Юрий Попов.

If var [not] in value1,value2,...
If var [not] contains value1,value2,...

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

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 и не в Блокноте.

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.