Lua比较运算符(通配符?)

时间:2012-07-20 23:16:44

标签: lua operators

我是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有不同的方式?

另外,我完全猜测声明:“如果档案就像.......”

1 个答案:

答案 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}},以便在任何一种情况下明确匹配每个字符。