我检索一个包含从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中如何解决这个问题。我不像我想的那样熟悉这种语言。
答案 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个