读取文件中的字符到数组

我已经找了很长时间了,如何将整个文件读入字符数组中。我的当前代码:

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”

那么怎么做呢?

点赞
用户1009479
用户1009479

像你之前读取文件的方式一样,将整个文件读入,并将内容字符串按字符拆分。这可以使用 string 库轻松完成。例如:

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
2016-05-09 16:25:09
用户2060502
用户2060502

gmatch用于匹配模式,我认为有点过于复杂了,你只需要用string.sub()就行了。

local text = readWholeFile("filename")
local t = {}
for i=1, #text do t[#t + 1] = text:sub(i,1) end
2016-05-11 07:22:30