统计字符串出现次数

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

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

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

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

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

你需要转义它,即使用模式 " %-%-"

2012-06-22 07:59:38
用户1208078
用户1208078

你可以使用 string.gsub 来将其转化为一行:

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

不需要循环!

不建议用于大输入,因为函数会将处理后的输入返回到 _ 变量,并且会一直占用内存直到该变量被销毁。

2012-06-22 14:27:02
用户2244700
用户2244700

这个片段可以很有帮助,基于 Mike Corcoran 的回复和 WD40 的优化建议。

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

print(count('Hello World', 'l'))
2018-07-10 02:11:41