Lua 正在计算字符串出现的次数

Lua 正在计算字符串出现的次数,lua,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) -字符在模式中具有特殊意义,用于非贪婪重复 您需要对其进行转义,即使用模式“%-%-”您实际上可以使用string.gsub作为一行程序执行此操作: loca

我试图计算字符串中“-”出现的次数

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

我尝试了下面的方法,但结果是4而不是2,你知道为什么吗

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

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


您需要对其进行转义,即使用模式
“%-%-”

您实际上可以使用
string.gsub作为一行程序执行此操作:

local _, count = string.gsub(argv, " %-%-", "")
print(count)
不需要循环


不建议用于大输入,因为该函数将处理后的输入返回到
\ucode>变量,并将保留在内存中,直到变量被销毁。

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


在Lua 5.1及更高版本中,您需要使用string.gmatch而不是string.gfind代替伪变量,可以丢弃第一个返回值,即带替换的字符串,这会减少内存占用。
function count(base, pattern)
    return select(2, string.gsub(base, pattern, ""))
end

print(count('Hello World', 'l'))