[英]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.