【问题标题】:LUA: count occurrences of a character into a string?LUA:将字符的出现次数计入字符串?
【发布时间】:2021-07-21 16:12:46
【问题描述】:

请问如何使用 LUA 将特定字符的出现次数统计到字符串中?

我这里举个例子

让字符串:“my|fisrt|string|hello”

我想计算字符“|”出现了多少次有字符串。 在这种情况下,它应该返回 3

请问我该怎么做?

【问题讨论】:

    标签: lua


    【解决方案1】:

    gsub返回第二个值中的操作次数

    local s = "my|fisrt|string|hello"
    
    local _, c = s:gsub("|","")
    print(c) -- 3
    

    【讨论】:

      【解决方案2】:

      最简单的解决办法就是一个字一个字地计算:

      local count = 0
      local string = "my|fisrt|string|hello"
      for i=1, #string do
          if string:sub(i, i) == "|" then
              count = count + 1
          end
      end
      

      或者,计算你的角色的所有匹配项:

      local count = 0
      local string = "my|fisrt|string|hello"
      for i in string:gmatch("|") do
          count = count + 1
      end
      

      【讨论】:

      • 我正准备使用 gsub 而不是 gmatch 发布答案(增加回调中的计数器),但你打败了我,所以...接受我的投票。跨度>
      • 无论如何我在gmatch 中犯了一个小错误。我认为它会被字符分割而不是匹配字符,所以我的计数被取消了。很快抓住它并幸运地修复了它
      • 我成功地使用了你建议的第二个例子。非常感谢
      • @HenrikIlgen 您不必在 gsub 的回调中增加计数器。 gsub 已经返回完成的替换次数
      猜你喜欢
      • 2017-07-11
      • 2014-04-24
      • 2020-02-21
      • 2012-02-12
      • 2023-02-04
      • 2012-06-24
      相关资源
      最近更新 更多