2015-11-08 95 views
2

我有以下代碼:如何檢查是否字符串包含在一個數組中的AutoHotkey

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

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

它返回0即使字符串是清晰地呈現在數組中。

如何測試字符串值是否存在於數組中?

PS:我也試過if var in,它給出了相同的結果。

回答

3

你不能,只使用一個命令。從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()有意義使用。

+1

感謝您的回答,'hasValue'功能是一個不錯的解決方案。我對這個功能尚未成爲AHK的一部分感到有點驚訝。 – monnef

相關問題