我是Lua的新手,所以我现在正在学习操作员。 是否有一个通配符可以在Lua中使用字符串?
我来自PHP背景,我实际上是在尝试编写代码:
--scan the directory's files
for file in lfs.dir(doc_path) do
--> look for any files ending with .jpg
if file is like ".jpg" then
--do something if any files ending with .JPG are scanned
end
end
你会看到我正在寻找JPG文件,而我正在循环浏览目录中的文件。 我习惯了搜索字符串的百分号或星号字符。 但也许Lua有不同的方式?
另外,我完全猜测声明:“如果档案就像.......”
答案 0 :(得分:3)
您需要函数string.match()
,它会测试字符串是否与pattern匹配。
这是我重写你的例子(未经测试):
--scan the directory's files
for file in lfs.dir(doc_path) do
--> look for any files ending with .jpg
if file:match "%.jpg$" then
--do something if any files ending with .JPG are scanned
end
end
符号file:match "%.jpg%"
使用方法调用语法sugar调用函数string.match
,因为默认情况下所有字符串值都将string
设置为其元表。为了简化表达,我还删除了唯一参数的括号。
模式最后由$
锚定到字符串的末尾,并通过引用.
来测试文字%
。但是,由于模式区分大小写,因此仅匹配扩展名全部为小写的文件。
为了使其不区分大小写,最简单的答案是在测试之前通过编写file:lower:match"%.jpg$"
来折叠文件名的大小写,string.lower()
在调用match
之前将调用链接到"%.[Jj][Pp][Gg]$"
}。或者,您可以将模式重写为{{1}},以便在任何一种情况下明确匹配每个字符。