Lua - 获取字符串的索引位置

我遇到了一个在Lua中检查一个字符串值是否没有出现在另一个字符串中的问题。

这是我在Javascript中可能这样做的:

'my string'.indexOf('no-cache') === -1 // true

但是在Lua中,我尝试使用string模块,它给我带来了意想不到的响应:

string.find('my string''no-cache') -- nil,这没问题,但是..
string.find('no-cache''no-cache') -- nil..这很奇怪
string.find('no-cache''no') -- 1, 2,在这里它是正确的..奇怪..
点赞
用户258523
用户258523

- 在 lua 中是一个模式元字符。你需要对它进行转义。string.find('no-cache', 'no%-cache')

2013-11-26 16:47:02
用户828255
用户828255

正如先前提到的,-是一个模式元字符,具体地:

  • 一个单独的字符类后面跟着-,也匹配字符类中0个或多个字符的重复。不像\*,这些重复项总是匹配最短的可行序列;

您可能会对 string.findplain 选项感兴趣。这将避免将来需要转义任何其他内容的需要。

string.find('no-cache', 'no-cache', 1, true)
2013-11-26 16:57:10