在lua中,有的时候需要将一个字符串中的信息分割出来,就要涉及到分割字符串,下面就分割字符串做一下介绍。
function lua_string_split(str, split_char) --str是目标分割字符串,split_char分割字符串标志
local sub_str_tab = {}; --存放分割后得到的数据
while (true) do
local pos = string.find(str, split_char); --第一次分割,找到分割字符串的位置
if (not pos) then --pos为false,表示不需要分割了,结束循环
local size_t = table.getn(sub_str_tab)
table.insert(sub_str_tab,size_t+1,str); --将str添加到sub_str_tab后面
break; --结束循环
end
local sub_str = string.sub(str, 1, pos - 1); --位置存在,得到第一个值
local size_t = table.getn(sub_str_tab)
table.insert(sub_str_tab,size_t+1,sub_str); --添加进去
local t = string.len(str);
str = string.sub(str, pos + 1, t); --得到新的分割字符
end
return sub_str_tab;
end
对于上面提到的lua中的string函数,进行说明一下
string.find(str, split_char) --str为源字符串,split_char为待搜索模式串,函数默认返回的是两个值,即查找到的子串的起止下标,如果不存在匹配返回 nil
string.sub(str, pos + 1, t) --取出字符串str 从 pos + 1到t的字符串
string.len(str) --返回所给字符串的长度,如果字符串中包含'\0',也会被统计为一个字符
local str = lua_string_split("2015,11,12", ",")
--得到的str为str = {[1] = "2015",[2] = "11",[3] = "12"}