【问题标题】:counting number of string occurrences计算字符串出现的次数
【发布时间】:2012-06-24 12:25:30
【问题描述】:

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

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

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

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

【问题讨论】:

  • 在 Lua 5.1 及更高版本中,您需要使用 string.gmatch 而不是 string.gfind

标签: lua


【解决方案1】:

您实际上可以使用string.gsub 以单行方式执行此操作:

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

不需要循环!

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

【讨论】:

  • 不使用虚拟变量,select 可以丢弃第一个返回值,即带有替换的字符串,从而减少内存占用。
【解决方案2】:

根据Mike Corcoran 的回复和WD40 的优化建议,此sn-p 可能会有所帮助

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      • 2012-02-12
      相关资源
      最近更新 更多