最近在做lua开发,需要用到字符串切割,奈何lua没有相关函数能实现,网上查到的一些办法也不尽人意,总是出现各种bug,大部分资料提供的方法函数只支持单字符切割,都没能达到预期效果,所以自己写了个lua split方法,支持存在连续目标字符串的切割,连续目标字符串之间不留空
function split(str, sep)
local t={}
local _start=0;
local _end=0;
--字符串记录游标
local last_end=_end;
while true do
_start,_end=string.find(str,sep,last_end+1)
if _start ~= nil and _end ~=nil then
--此处防止连续出现目标字符串,导致记录中出现空字符串的情况
if _start ~= last_end+1 then
table.insert(t,string.sub(str,last_end+1,_start-1))
end
--游标后移
last_end=_end
else
table.insert(t,string.sub(str,last_end+1,string.len(str)))
break
end
end
return t;
end
要特别注意,lua中字符下标是从1开始,不是从0开始的
1586

被折叠的 条评论
为什么被折叠?



