lua表字符串concat不正确



我有一个简单的函数来读取.txt文件中的行:

function loadData(file_name, root_path)
-- here, file_name is './list.txt', path is '../data/my/'


for line in io.lines(file_name) do
local data = {}
base_path = root_path .. line
-- so, base_path is something like  ../data/my/001
data.file = base_path .. '_color.png'
print(data)
end
end

我希望数据应该是{file:"../data/my/001_color.png;},但我得到了{_color.png"./data/my/001}

有人能帮我吗?谢谢

检查./list.txt文件内容的EOL(行尾(,因为它可能在windows上生成(EOL=CR LF(,也可能在linux上解释(EOL=LF(。io.lines在linux上将CR字符转换为字符串!

你的程序使一切都正确,但你的数据不是。

假设./list.txt中的第一行是../data/my/001rnline变量是../data/my/001r(print(#line)给出15而不是14(。print中的回车(CR(将光标移动到不改变行的起始行位置。在这种情况下,您的print输出与{file: "../data/my/001r_color.png"}类似(因为它取决于print的实现(,并且您得到输出:

{file: "../data/my/001
_color.png"}                 <-- on the same line

让我们把它结合起来:

_color.png"}ata/my/001

纠正此问题:

  • 提供不带CR的文件(在所有系统上都能正常工作(
  • 在第一行添加循环:line = line:gsub('[rn]','')以删除CR LF

最新更新