检查变量的内容是否匹配列表中的某项.
if Var in MatchList if Var not in MatchList if Var contains MatchList if Var not contains MatchList
需要被检查的变量名称. 对于 "in" 运算符, 需要准确匹配列表中的某项.
对于 "contains" 运算符, 会更容易形成匹配: 只要列表中的某项作为子字符串包含于 Var 中.
逗号分隔的字符串列表, 其中的每个字符串都将与 Var 的内容进行比较以寻找匹配. 在分隔逗号周围的任何空格或 tab 都是有意义的, 这表示它们也是匹配字符串的一部分. 例如, 如果 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" 运算符的作用与 InStr() 或 If[Not]InString 相同.
可以使用 StringCaseSense On
来设置在比较时区分大小写.
如果 MatchList 较长, 可以通过延续片段方法将其分解成较短的几行, 这样可以增加可读性和可维护性.
运算符 "in" 和 "contains" 不支持用于表达式中. 相反, 使用 If 语句, 如 if (Var ~= "i)\A(Value1|Value2)\z")
表示 "in", 或 if (Var ~= "i)Value1|Value2")
表示 "contains", 来模拟这些运算符的行为.
If Var [not] between Low and High, IfEqual/Greater/Less, IfInString, StringCaseSense, 区块, Else
检查 var 是否为文件扩展名 exe, bat 或 com.
if var in exe,bat,com MsgBox The file extension is an executable type.
检查 var 是否为质数 1, 2, 3, 5, 7 or 11.
if var in 1,2,3,5,7,11 ; 避免在列表中添加空格. MsgBox %var% is a small prime number.
if var contains 1,3 ; 注意, 比较的值是字符串, 而不是数字. MsgBox Var contains the digit 1 or 3 (Var could be 1, 3, 10, 21, 23, etc.)
允许用户输入一个字符串, 并检查它是否是单词 yes 或 no.
InputBox, UserInput, Enter YES or NO if UserInput not in yes,no MsgBox Your input is not valid.
检查 active_title 是否包含 "Address List.txt" 或 "Customer List.txt", 检查是否不包含 "metapad" 或 "Notepad".
WinGetTitle, active_title, A if active_title contains Address List.txt,Customer List.txt MsgBox One of the desired windows is active. if active_title not contains metapad,Notepad MsgBox But the file is not open in either Metapad or Notepad.