cocos2dx lua解析csv成lua配置文件,方便程序调用

cocos2dx lua解析csv成lua配置文件,方便程序调用,第1张

概述    我很喜欢去读笨木头的文章,简单的说我是笨木头的粉丝!这里读了笨木头的文章之后,引用了 Cocos2d-x Lua 读取Csv文件,更方便的使用数据 这篇文件的数据,写了一个用lua解析csv成lua配置文件,方便程序调用,如果用cocos2dx lua写程序的话,可以这样子来用cha.MissionEntry[1].Index 这里是一段全lua代码: --读取文件内容,返回一个字符串f 我很喜欢去读笨木头的文章,简单的说我是笨木头的粉丝!这里读了笨木头的文章之后,引用了Cocos2d-x Lua 读取Csv文件,更方便的使用数据这篇文件的数据,写了一个用lua解析csv配置文件,方便程序调用,如果用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 endfunction split(str,reps)  --这里是分割字符串的函数      local resultStrsList = {}      string.gsub(str,'[^' .. reps ..']+',function(w) table.insert(resultStrsList,w) end )      return resultStrsListendfunction 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,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 arrsendlocal function main()      local csvConfig = loadCsvfile("C:/Users/MissionEntry.csv")endmain()


  
 上面的一段代码是去读一个MissionEntry.csv文件,也就是下面的图片            执行了上面这段lua代码之后,就会生成一个MissionEntry——test.lua文件,这个文件是你自己命名的,打开这个文件就是下面这段内容了    


然后我们在别的lua文件引用的时候,就用这段代码去拿
Summary = require ("MissionEntry") --读取文件,这是文件的路径Summary.MissionEntry[1].Index


这样就方便很多了,执行lua代码,我是用这个编辑器的,LUA编辑调试器
注:第一次写博客,写的不好,还请见谅,也欢迎各位大神指导 总结

以上是内存溢出为你收集整理的cocos2dx lua解析csv成lua配置文件,方便程序调用全部内容,希望文章能够帮你解决cocos2dx lua解析csv成lua配置文件,方便程序调用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1017876.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存