【问题标题】:lua - split string with whitespaces and numbers by commalua - 用逗号分割带有空格和数字的字符串
【发布时间】:2019-10-03 12:57:13
【问题描述】:

如何用逗号分割带有空格和数字的字符串?

例如

str = "bar, bar123, bar 123, 123"

到一个包含

的表
{"bar", "bar123", "bar 123", "123"}

【问题讨论】:

标签: string lua whitespace


【解决方案1】:

简化模式匹配的关键是确保一致性。在这种情况下,这是通过确保每个字段都有一个终止逗号来实现的:

for w in (str..","):gmatch("(.-),%s*") do
   print("["..w.."]")
end

【讨论】:

    【解决方案2】:

    从 luarocks 安装 split 模块,然后

    split = require("split").split
    t = split(str, ', ')
    for _, val in ipairs(t) do print(">" .. val .. "<") end
    
    >bar<
    >bar123<
    >bar 123<
    >123<
    

    【讨论】:

      【解决方案3】:

      你可以使用这个功能。

      function string:split(_sep)
          local sep, fields = _sep or ":", {}
          local pattern = string.format("([^%s]+)", sep)
          self:gsub(pattern, function(c) fields[#fields+1] = c end)
          return fields
      end
      

      这将返回一个由“_sep”分割的表。

      【讨论】:

        【解决方案4】:

        如果其他人被谷歌引导到这里寻找基本 lua 的有效答案:

        str_tbl = {}
        for value in string.gmatch(str, '([^, *]+)') do
          str_tbl[#str_tbl+1] = value 
        end
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-03-22
          • 2023-03-15
          • 1970-01-01
          • 1970-01-01
          • 2014-07-14
          • 2023-03-20
          • 1970-01-01
          相关资源
          最近更新 更多