| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- const {ccclass, property} = cc._decorator;
- @ccclass
- export default class ReadCsv extends cc.Component {
- static _instance: ReadCsv = null!;
- public static instance()
- {
- if (!this._instance)
- {
- this._instance = new ReadCsv();
- }
- return this._instance;
- }
-
- public CSVToArray(fullPath:string,callback) {
- cc.resources.load(fullPath, function (err, string) {
- if (err) {
- cc.error(err.message || err);
- return;
- }
- let array = ReadCsv.instance().CSVStringToArrayJerry(string);
- if (callback){
- callback(array);
- }
- });
- }
- public CSVStringToArray( strData: string, strDelimiter:any ):any[] {
- 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 );
- }
- if(arrData.length>0){
- arrData.pop();
- }
- return arrData;
- }
- //用这个方法也可以
- public CSVStringToArrayJerry(strData: cc.Asset):any[]{
- let str = strData.toString().replace(/\r/g,"");
- let mapArr = str.split("\n");
- var array = [];
- for (let index = 0; index < mapArr.length; index++) {
- const element = mapArr[index];
- let arr = element.split(",");
- array[index] = arr;
- }
- return array;
- }
-
- }
|