我试图计算"的次数。 - "发生在一个字符串中。
例如,它在这里发生两次' a --b --c'
我尝试了以下内容,但它给了我4而不是2,任何想法为什么?
argv='a --b --c'
count = 0
for i in string.gfind(argv, " --") do
count = count + 1
end
print(count)
答案 0 :(得分:22)
您实际上可以使用string.gsub
:
local _, count = string.gsub(argv, " %-%-", "")
print(count)
不需要循环!
不推荐用于大输入,因为该函数将处理后的输入返回到_
变量,并将保留在内存中,直到变量被销毁。
答案 1 :(得分:7)
-
字符在模式中具有特殊含义,用于非贪婪的重复。
你需要逃避它,即使用模式" %-%-"
。
答案 2 :(得分:4)
基于Mike Corcoran的响应和WD40的优化建议,此代码段可能会有所帮助
function count(base, pattern)
return select(2, string.gsub(base, pattern, ""))
end
print(count('Hello World', 'l'))