Cocos2d-js读取csv文件工具类

Cocos2d-js读取csv文件工具类,第1张

概述在游戏开发中,一般会将一些游戏的配置信息保存到csv文件中,比如游戏有多个关卡,每个关卡失败之后的文案,分享的文案等等配置信息,我们在程序中通常就要读取csv文件的内容,然后通过代码解析文件数据,最后封装成一个类似二维数组的数据,里面存放着csv行和列的信息。 现在比如我们的res目录下有个levelConfig.csv文件,里面的内容如下: 关卡,关卡类名,标题,简介,胜利分享文案,失败求助文案

在游戏开发中,一般会将一些游戏的配置信息保存到csv文件中,比如游戏有多个关卡,每个关卡失败之后的文案,分享的文案等等配置信息,我们在程序中通常就要读取csv文件的内容,然后通过代码解析文件数据,最后封装成一个类似二维数组的数据,里面存放着csv行和列的信息。

现在比如我们的res目录下有个levelConfig.csv文件,里面的内容如下:

关卡,关卡类名,标题,简介,胜利分享文案,失败求助文案,提示1,提示2,提示3level,classname,Title,desc,winShareWord,helpWord,tips1,tips21,关卡1,标题1,desc1,胜利分享1,求助文案1,提示22,关卡2,标题2,desc2,胜利分享2,求助文案2,提示2

我们来首先来获取文件里面的内容。

function initLevelConfig(){    try{        cc.loader.loadTxt("res/levelConfig.csv",function(err,data){            if(err){cc.log(err);return;}            log(data);        });    }catch(err){        log("获取关卡配置总表错误:"+err);    }}

通过cc.loader.loadTxt方法,就能够获取到文件里面的内容了,不过获取到的data是一串字符串,我们还必须将其解析,所以我们在这里使用一个解析csv文件的函数,将CSV转换为Array

//CSV转Array function CSVToArray( strData,strDelimiter ) {    strDelimiter = (strDelimiter || ",");    var objPattern = new RegExp(        (            "(\" + strDelimiter + "|\r?\n|\r|^)" +            "(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +            "([^\"\" + strDelimiter + "\r\n]*))"            ),"gi"    );    var arrData = [[]];    var arrMatches = null;    while (arrMatches = objPattern.exec( strData )){        var strMatchedDelimiter = arrMatches[ 1 ];        if (            strMatchedDelimiter.length &&            (strMatchedDelimiter != strDelimiter)            ){            arrData.push( [] );        }        if (arrMatches[ 2 ]){            var strMatchedValue = arrMatches[ 2 ].replace(                new RegExp( "\"\"","g" ),"\""            );        } else {            var strMatchedValue = arrMatches[ 3 ];        }        arrData[ arrData.length - 1 ].push( strMatchedValue );    }    return arrData;}

我们使用这个方法,就能够把scv的那一串内容转换为一个二维数组,然后通过遍历这个二维数组,就能获取到我们想要的数据了:

function initLevelConfig(){    try{        cc.loader.loadTxt("res/levelConfig.csv",function(err,data){            if(err){cc.log(err);return;}            //csv数据二维数组  var csvArray=CSVToArray(data,",");            for(var i= 2;i<=csvArray.length-1;i++){                //rowData表示一行的数据  var rowData=csvArray[i];                //一行有很多列,遍历,获取每一列的内容  for(var j=0;j<rowData.length;j++){                    //输出i行j列数据  cc.log(csvArray[i][j]);                }            }        });    }catch(err){        cc.log("获取关卡配置总表错误:"+err);    }}

以下的方法是获取csv文件中指定行列对应的内容:

第一个参数是文件内容,

第二个参数是分割标记,CSV文件内容数据一般都是以逗号“,”分割的,默认为逗号“,“

第三个参数是行数

第四个参数是列数

function getStrByRowAndKeyFromCSV( strData,strDelimiter,row,key ) {    strDelimiter = (strDelimiter || ",");    var objPattern = new RegExp(        (            "(\" + strDelimiter + "|\r?\n|\r|^)" +            "(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +            "([^\"\" + strDelimiter + "\r\n]*))"            ),"gi"    );    var arrData = [[]];    var arrMatches = null;    while (arrMatches = objPattern.exec( strData )){        var strMatchedDelimiter = arrMatches[ 1 ];        if (            strMatchedDelimiter.length &&            (strMatchedDelimiter != strDelimiter)            ){            arrData.push( [] );        }        if (arrMatches[ 2 ]){            var strMatchedValue = arrMatches[ 2 ].replace(                new RegExp( "\"\"","\""            );        } else {            var strMatchedValue = arrMatches[ 3 ];        }        arrData[ arrData.length - 1 ].push( strMatchedValue );    }    for(var i = 0; i<arrData[1].length; i++){        if (arrData[1][i] == key){            return  arrData[row+1][i]        }    }    return  "";}
总结

以上是内存溢出为你收集整理的Cocos2d-js读取csv文件工具类全部内容,希望文章能够帮你解决Cocos2d-js读取csv文件工具类所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1074472.html

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

发表评论

登录后才能评论

评论列表(0条)

保存