当搜索 "." 时,string.find 没有返回 nil。

这个问题不需要太多解释,如果我将以下代码输入 Lua 解释器(修改自这里):

print(tostring(string.find("Hello Lua user", "banana")))

预期输出结果为 nil。但是,如果我使用 "." 代替 "banana",像这样:

print(tostring(string.find("Hello Lua user", ".")))

我得到的输出结果是 1,为什么会这样?我是否有办法检测字符串中是否存在点?(如果有必要,我需要知道这一点,以便检测目录是文件还是文件夹(是的,我知道 Linux 上的文件夹中可以有点/文件中没有点))

点赞
用户501459
用户501459

find 使用 Lua 的模式匹配,除非你明确告诉它不要使用。.是一个字符类,表示“任何字符”。如果你想要找到一个实际的句号,你需要:

  1. 转义句号:%.
  2. 告诉 find 不要使用模式匹配。

这都可以在手册中找到,这也可能是你应该从这些问题开始的地方。

2015-08-19 15:59:25