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

8

我有以下代码:

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

a := ignored.HasKey("mumble.exe")
MsgBox,,, %a%

尽管该字符串明显存在于数组中,但它返回 0

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

PS:我还尝试过使用if var in,结果相同。

1个回答

7

仅使用一个命令是不可能的。截至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
}

或者使用一些花哨的解决方法:
ignored := { "Rainmeter.exe":0, "Nimi Places.exe":0, "mumble.exe":0 }
msgbox, % ignored.HasKey("mumble.exe")

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

4
感谢您的回答,hasValue函数是一个不错的解决方案。我有些惊讶这个功能还没有成为AHK的一部分。 - monnef

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接