繁体   English   中英

如何在lua中拆分字符串值。 错误

[英]How to split string values in lua. Error

所以我试图只拆分我通过 csv 文件读入的字符串。 该字符串包含多个值,例如 first_name、last_name、email_address 等...我想使用 split 函数将所有这些值分配给我自己的特定变量。 到目前为止,这就是我所拥有的:

first_name, last_name, email_address, street_address, city, state = split(line, ",")
person_record = {first_name, last_name, email_address, street_address, city, state}

我在 lua 中收到一个错误,提示“尝试调用全局‘拆分’(一个 nil 值)

我在谷歌上搜索了错误消息但没有成功。 我是否可能必须包含一个库才能使用 split 功能????

或者我只是错误地使用了拆分功能。 任何帮助是极大的赞赏 :/

我不相信 Lua 在您尝试使用它时具有split功能。 这个页面似乎是关于如何在 Lua 中拆分(和连接)字符串的全面总结。

你可以试试我写的这个类似 python 的拆分实现。

参数:

  • s -- 要拆分的字符串

  • 模式——它是分隔符(一个字符或一个字符串)

  • maxsplit -- 最多将执行此拆分

返回一个包含拆分的表。

例子:

split('potato', 't') --> {'po', 'a', 'o'}

split('potato', 't', 1) --> {'po', 'ato'}

split('potato', 'ta') --> {'po', 'to'}

split('potato', 'foo') --> {'potato'}

split = function(s, pattern, maxsplit)
  local pattern = pattern or ' '
  local maxsplit = maxsplit or -1
  local s = s
  local t = {}
  local patsz = #pattern
  while maxsplit ~= 0 do
    local curpos = 1
    local found = string.find(s, pattern)
    if found ~= nil then
      table.insert(t, string.sub(s, curpos, found - 1))
      curpos = found + patsz
      s = string.sub(s, curpos)
    else
      table.insert(t, string.sub(s, curpos))
      break
    end
    maxsplit = maxsplit - 1
    if maxsplit == 0 then
      table.insert(t, string.sub(s, curpos - patsz - 1))
    end
  end
  return t
end

我希望它有帮助 -^.^- 再见

您可以从pl.stringx包中获取split函数:

安装penlight包:

luarocks install penlight

然后在程序中,您可以使用如下所示的包:

local split = require("pl.stringx").split
local paths = split("/a/b/feature-name/d", "/") 
-- output: {,a,b,feature-name,d}
local feature = paths[4] 
-- output: feature-name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM