我很喜欢去读笨木头的文章,简单的说我是笨木头的粉丝!这里读了笨木头的文章之后,引用了 Cocos2d-x Lua 读取Csv文件,更方便的使用数据 这篇文件的数据,写了一个用lua解析csv成lua配置文件,方便程序调用,如果用cocos2dx lua写程序的话,可以这样子来用cha.MissionEntry[1].Index
这里是一段全lua代码:
--读取文件内容,返回一个字符串
function getFile(file_name)
local f = assert(io.open(file_name, 'r')) --确保读取文件不会错误
local string = f:read("*all") --读取文件的所有内容
f:close() --这里记得关闭文件指针
return string
end
function split(str, reps) --这里是分割字符串的函数
local resultStrsList = {}
string.gsub(str, '[^' .. reps ..']+', function(w) table.insert(resultStrsList, w) end )
return resultStrsList
end
function loadCsvFile(filePath)
--读取文件
local data = getFile(filePath)
--按行划分
local lineStr = split(data,'\n\r')
--[[从第三行开始保存(第一行是标题,第二行是注释,后面的行才是内容)
用二维数组保存:arr[ID][属性标题字符串]
--]]
local titles = split(lineStr[1],",")
--打印第一行的数据
--print(titles[1]..":"..titles[2])
for ii=1,#titles,1 do
print(titles[ii])
end
local ID = 1
local arrs = {}
print(#lineStr)
local file = io.open("C:/Users/MissionEntry——test.lua", "w") --这里会创建一个新的文件MissionEntry——test.lua
assert(file)
file:write("cha = {}\n")
file:write("cha.MissionEntry = ")
file:write("{")
file:write("\n")
for i = 3,#lineStr,1 do
-- 一行中,每一列的内容
local content = split(lineStr[i],",")
--以标题作为索引,保存每一列的内容,取值的时候这样取:arrs[1].Title
arrs[ID] = {}
file:write(" ")
file:write("[")
file:write(ID)
file:write("]={")
for j=1,#titles,1 do
arrs[ID][titles[j]] = content[j]
file:write(titles[j])
file:write("=")
if type(content[j]) == "number" then
file:write(content[j])
end
if type(content[j]) == "string" then
if tonumber(content[j]) then --这里是判断数字,如果为真,就写数字
file:write(content[j])
else
file:write(string.format("%q", content[j])) --如果不是数字,就写带有双引号的字符串
end
end
if j ~= #content then --这里可以判断是最后一个就要写“}”
file:write(",")
else
file:write("}")
end
end
if i ~= #lineStr then --这里可以判断是最后一个就要写"",也就是空字符串
file:write(",")
else
file:write("")
end
file:write("\n")
file:write("\n")
ID = ID + 1
end
file:write("}")
file:close()
return arrs
end
local function main()
local csvConfig = loadCsvFile("C:/Users/MissionEntry.csv")
end
main()
上面的一段代码是去读一个MissionEntry.csv文件,也就是下面的图片
执行了上面这段lua代码之后,就会生成一个MissionEntry——test.lua文件,这个文件是你自己命名的,打开这个文件就是下面这段内容了
Summary = require ("MissionEntry") --读取文件,这是文件的路径
Summary.MissionEntry[1].Index
这样就方便很多了,执行lua代码,我是用这个编辑器的,LUA编辑调试器
注:第一次写博客,写的不好,还请见谅,也欢迎各位大神指导