加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2d-x(quick-lua)读取csv文件

发布时间:2020-12-14 21:44:36 所属栏目:百科 来源:网络整理
导读:一、准备一份csv文件 ID,Name,Des,ModelID,名字,描述,图片模型1,广告,www.benmutou.com,csv.png2,否认,呵呵,广告什么的,我才不会加,good.png 二、字符串分割函数 function split(str,reps) local resultStrsList = {}; string.gsub(str,'[^' .. reps ..']+

一、准备一份csv文件

ID,Name,Des,Model
ID,名字,描述,图片模型
1,广告,www.benmutou.com,csv.png
2,否认,呵呵,广告什么的,我才不会加,good.png

二、字符串分割函数

 

function split(str,reps)
    local resultStrsList = {};
    string.gsub(str,'[^' .. reps ..']+',function(w) table.insert(resultStrsList,w) end );
    return resultStrsList;
end

三、解析csv函数

function loadCsvFile(filePath) 
    -- 读取文件
    local data = cc.FileUtils:getInstance():getStringFromFile(filePath);

    -- 按行划分
    local lineStr = split(data,'nr');

    --[[
                从第3行开始保存(第一行是标题,第二行是注释,后面的行才是内容) 
            
                用二维数组保存:arr[ID][属性标题字符串]
    ]]
    local titles = split(lineStr[1],",");
    local ID = 1;
    local arrs = {};
    for i = 3,#lineStr,1 do
        -- 一行中,每一列的内容
        local content = split(lineStr[i],");

        -- 以标题作为索引,保存每一列的内容,取值的时候这样取:arrs[1].Title
        arrs[ID] = {};
        for j = 1,#titles,1 do
            arrs[ID][titles[j]] = content[j];
        end

        ID = ID + 1;
    end

    return arrs;
end
这里把解析出来的数据存储在数组中了

四、测试代码

local function main()
    local csvConfig = loadCsvFile("res/Mutou.Csv");
    
    print(csvConfig[1].Name .. ":" .. csvConfig[1].Des);
    print(csvConfig[2].Name .. ":" .. csvConfig[2].Des);
end
这样就能把csv文件的第一、二行的描述输出来。是不是比c++简单多了。好了,就到这里!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读