检查可变数量的If语句

时间:2012-10-09 23:52:32

标签: autohotkey

我检索一个包含从Ini文件到数组的一系列文件扩展名的字符串。 本质上,我想检查我的变量%ext%是否等于数组中的任何这些文件扩展名。为了澄清,我不知道提前有多少项目。

我知道我解释得很差,所以我会尝试用伪代码解释一下

ext := jpg ;(for example)
IniRead, extsFromFile, data.ini, Images, Extensions
StringSplit, allExts, extsFromFile, `,
If (ext = <any of the elements in the array allExts>)
    doStuff()

我在Autohotkey中如何解决这个问题。我不像我想的那样熟悉这种语言。

2 个答案:

答案 0 :(得分:1)

守则:

ext := "jpg"
found := "false"

Loop, read, ExtsList.txt ;this loops reads each line of the file...
{
    If ext = %A_LoopReadLine% ; A_LoopReadLine is the value of the current line...
    {
        msgbox, Found "%ext%" in "ExtsList.txt" at line "%A_Index%"...
        ;call function "dostuff()"
        found := "true"
    }
}

if found = false
{
msgbox, Did not find "%ext%" in "ExtsList.txt"...
}

<强> ExtsList.txt

png
svg
xml
jpg
html
txt
祝你好运! :d

答案 1 :(得分:0)

StringSplit以OutputVar0的形式为您提供最后一个元素的索引(或长度,具体取决于您的查看方式)。您可以循环使用内置的A_Index变量来检查每个元素是否匹配。

ext := "jpg" ;(for example)
IniRead, extsFromFile, data.ini, Images, Extensions

; For debugging/testing purposes
extsFromFile = png,bmp,tiff,jpg


StringSplit, allExts, extsFromFile, `,
Loop %allExts0% 
    If (ext = allExts%A_Index%) 
        MsgBox Match! We have %allExts0% extensions and "%ext%" was the %A_Index%th

给予

  

匹配!我们有4个扩展,“jpg”是第4个