Lua中字符串按照字符分割
Lua中字符串按照字符分割
在Lua中,字符串分割通常不像其他一些编程语言那样内置在标准库中。然而,你可以使用字符串模式匹配和表操作来手动实现字符串分割功能。以下是一个示例函数,它接受一个字符串和一个分隔符作为参数,并返回一个包含分割后子字符串的表。
方法一
Code
--[[
@author:
@note: 将字符串按照指定字符进行分割,返回分割后的数组
@param str 要分割的字符
@param delimiter 设置的分隔符
@return 转换后的数据
@attention
--]]
function split(str, delimiter)
-- 结果表
local result = {}
local current = ""
for i = 1, #str do
if str:sub(i, i) == delimiter then
if #current > 0 then
table.insert(result, current)
end
current = ""
else
current = current .. str:sub(i, i)
end
end
if #current > 0 then
table.insert(result, current)
end
return result
end
-- 使用示例
local str = "one,two,three,four"
local delimiter = ","
local parts = split(str, delimiter)
-- 打印结果
for i, part in ipairs(parts) do
print(part)
end
方法二
Code
--[[
@author:
@note: 将字符串按照指定字符进行分割,返回分割后的数组
@param str 要分割的字符
@param delimiter 设置的分隔符
@return 转换后的数据
@attention
--]]
function split(str , delimiter)
local dLen = string.len(delimiter);
local newDeli = '';
for i=1,dLen,1 do
newDeli = newDeli .. "["..string.sub(delimiter, i, i).."]";
end
local locaStart,locaEnd = string.find(str, newDeli);
local arr = {};
local n = 1;
while (locaStart ~= nil)
do
if (locaStart > 0) then
arr[n] = string.sub(str, 1, locaStart - 1);
n = n + 1;
end
str = string.sub(str, locaEnd + 1, string.len(str));
locaStart,locaEnd = string.find(str, newDeli);
end
if (str ~= nil) then
arr[n] = str;
end
return arr;
end
结语
你可以根据需要调整这个函数,比如支持多个分隔符或处理边界情况。这个简单的实现没有考虑一些复杂的场景,比如转义字符或嵌套分隔符。如果你的应用场景需要处理这些复杂情况,你可能需要使用更复杂的解析逻辑或考虑使用现成的库来处理字符串分割。