如何解决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
我希望数据应该为 {文件:“ ../ 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/001\r\n
line
变量为../data/my/001\r
(print(#line)
给出15而不是14)。
print
中的回车符(CR)将光标移动到开始线位置,而没有改变行。
在这种情况下,您的print
输出类似于{file: "../data/my/001\r_color.png"}
(因为它取决于print
的实现),您会得到输出:
{file: "../data/my/001
_color.png"} <-- on the same line
让我们结合起来吧
_color.png"}ata/my/001
要纠正此问题:
- 提供文件无 CR(在所有系统上均可正常运行)
- 在第一行中添加循环:
line = line:gsub('[\r\n]','')
以删除CR LF
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。