You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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、spookeez
  • characters 数组元素顺序:gf、dad、dad、dad、spooky

适配说明

  • 如果你的文本使用Windows格式换行(\r\n)或者Unix格式换行(\n),上述遍历逻辑都可以正常识别,不需要额外修改
  • 如果需要调整分隔规则,直接修改match方法内的匹配模式即可

内容的提问来源于stack exchange,提问作者Sm-25

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:48:17