Lua中如何将冒号分隔格式文本转换为对应目标数组
Lua 实现冒号分隔文本转双数组方案
实现逻辑
整体分3步处理:
- 读取目标文本文件的全部内容
- 按换行符拆分出每一行的键值对
- 逐行按冒号切割内容,冒号前的内容存入歌曲名数组,冒号后的内容存入对应角色数组,自动跳过空行避免异常
完整实现代码
-- 初始化两个结果数组(Lua中数组用table实现) local songs = {} local characters = {} -- 1. 读取文本文件,把文件路径换成你实际的存储路径即可 local file = io.open("your_song_list.txt", "r") if not file then error("文件读取失败,请检查路径和读取权限") end local fileContent = file:read("*a") file:close() -- 2. 逐行遍历处理内容,自动跳过空行 for line in fileContent:gmatch("[^\r\n]+") do -- 按第一个冒号切割前后内容,兼容内容本身带冒号的场景 local songName, charName = line:match("^([^:]+):(.+)$") -- 仅格式合法的行才会存入数组,自动跳过错误行 if songName and charName then table.insert(songs, songName) table.insert(characters, charName) end end -- 以下为测试打印代码,正式使用可删除 print("songs数组:") for idx, name in ipairs(songs) do print(idx, name) end print("characters数组:") for idx, name in ipairs(characters) do print(idx, name) end
运行效果
针对你给出的示例文本,运行后两个数组的存储顺序和预期完全匹配:
songs数组元素顺序:tutorial、bopeebo、fresh、dadbattle、spookeezcharacters数组元素顺序:gf、dad、dad、dad、spooky
适配说明
- 如果你的文本使用Windows格式换行(
\r\n)或者Unix格式换行(\n),上述遍历逻辑都可以正常识别,不需要额外修改 - 如果需要调整分隔规则,直接修改
match方法内的匹配模式即可
内容的提问来源于stack exchange,提问作者Sm-25
相关产品推荐
相关产品推荐

