18

我正在尝试计算“--”在字符串中出现的次数。

因此,例如,它在这里出现两次 'a --b --c'

我尝试了以下方法,但它给了我 4 而不是 2,知道为什么吗?

argv='a --b --c'
count = 0
for i in string.gfind(argv, " --") do
   count = count + 1
end
print(count)
4

3 回答 3

35

您实际上可以使用以下方法作为单线执行此操作string.gsub

local _, count = string.gsub(argv, " %-%-", "")
print(count)

无需循环!

不推荐用于大输入,因为该函数将处理后的输入返回给_变量,并将保留在内存中,直到变量被销毁。

于 2012-06-22T14:27:02.210 回答
13

根据Mike Corcoran的响应和WD40的优化建议,此片段可能会有所帮助

function count(base, pattern)
    return select(2, string.gsub(base, pattern, ""))
end

print(count('Hello World', 'l'))
于 2018-07-10T02:11:41.873 回答
11

-字符在模式中具有特殊含义,用于非贪婪重复。

你需要逃避它,即使用模式" %-%-"

于 2012-06-22T07:59:38.040 回答