3

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

另外,我完全猜到了这样的说法:“如果文件像.......”

4

1 回答 1

3

您需要该函数string.match(),它测试字符串是否与模式匹配。

这是我对您的示例的重写(未经测试):

--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%"调用函数,这是因为所有字符串值都默认设置为它们的元表。为表达简单起见,我还删除了唯一参数周围的括号。string.matchstring

该模式由末尾的 锚定到字符串$的末尾,并.通过用 引用它来测试文字%。但是,由于模式区分大小写,因此仅匹配扩展名全部为小写的文件。

为了使其不区分大小写,最简单的答案是在测试之前通过编写折叠文件名的大小写file:lower:match"%.jpg$",这将调用链接到调用string.lower()之前match。或者,您可以重写模式"%.[Jj][Pp][Gg]$"以在任何一种情况下显式匹配每个字符。

于 2012-07-20T23:58:35.200 回答