我一直在寻找,如何将整个文件读入字符数组。我目前的代码:
function readWholeFile(fn)
if(fn==nil) then
return nil
end
local file = io.open(fn, "r")
return file:read("*a")
end
我想要这个函数返回
{'s', 'o', 'm', 'e', 't', 'e', 'x', 't'}
而不是
"Sometext"
那怎么办呢?
答案 0 :(得分:3)
按原样读取整个文件,并将内容字符串拆分为字符。这可以通过string
库轻松完成。 e.g:
for c in content:gmatch(".") do
另一种可能的解决方案:
file:read
支持多种格式,file:read("*a")
是读取整个文件的方式。相反,每次使用file:read(1)
读取一个字符,例如:
repeat
local c = file:read(1)
print(c)
until c == nil
答案 1 :(得分:0)
gmatch与模式一起工作,看起来有点矫枉过正IMHO,你需要的只是string.sub()
local text = readWholeFile("filename")
local t = {}
for i=1, #text do t[#t + 1] = text:sub(i,1) end