如何检查字符串是否包含在AutoHotKey中的数组中

mon*_*nef 5 arrays string autohotkey contains

我有以下代码:

ignored := [ "Rainmeter.exe", "Nimi Places.exe", "mumble.exe" ]

a := ignored.HasKey("mumble.exe")
MsgBox,,, %a%
Run Code Online (Sandbox Code Playgroud)

0即使字符串明确存在于数组中,它也会返回.

如何测试数组中是否存在字符串值?

PS:我也尝试if var in了同样的结果.

phi*_*294 5

你不能,只使用一个命令.自1.1.22.3起,AHK_L中未实现此类功能.

你必须定义自己的功能

hasValue(haystack, needle) {
    if(!isObject(haystack))
        return false
    if(haystack.Length()==0)
        return false
    for k,v in haystack
        if(v==needle)
            return true
    return false
}
Run Code Online (Sandbox Code Playgroud)

或使用一些花哨的解决方法:

ignored := { "Rainmeter.exe":0, "Nimi Places.exe":0, "mumble.exe":0 }
msgbox, % ignored.HasKey("mumble.exe")
Run Code Online (Sandbox Code Playgroud)

这将创建一个关联数组并将您的值作为键(这里的值设置为0),因此使用.HasKey()是有意义的.

  • 谢谢你的回答,`hasValue`函数是一个很好的解决方案.我有点惊讶这个功能还不是AHK的一部分. (2认同)