计算字符串出现次数

时间:2012-06-22 07:52:39

标签: lua

我试图计算"的次数。 - "发生在一个字符串中。

例如,它在这里发生两次' a --b --c'

我尝试了以下内容,但它给了我4而不是2,任何想法为什么?

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

3 个答案:

答案 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'))