1

我从 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 中解决这个问题一无所知。我对语言没有我想要的那么熟悉。

4

2 回答 2

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

于 2012-10-10T02:19:10.347 回答
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 个

于 2012-10-11T03:53:05.930 回答