ReadCsv.ts 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. const {ccclass, property} = cc._decorator;
  2. @ccclass
  3. export default class ReadCsv extends cc.Component {
  4. static _instance: ReadCsv = null!;
  5. public static instance()
  6. {
  7. if (!this._instance)
  8. {
  9. this._instance = new ReadCsv();
  10. }
  11. return this._instance;
  12. }
  13. public CSVToArray(fullPath:string,callback) {
  14. cc.resources.load(fullPath, function (err, string) {
  15. if (err) {
  16. cc.error(err.message || err);
  17. return;
  18. }
  19. let array = ReadCsv.instance().CSVStringToArrayJerry(string);
  20. if (callback){
  21. callback(array);
  22. }
  23. });
  24. }
  25. public CSVStringToArray( strData: string, strDelimiter:any ):any[] {
  26. strDelimiter = (strDelimiter || ",");
  27. var objPattern = new RegExp(
  28. (
  29. "(\\" + strDelimiter + "|\\r?\\n|\\r|^)" +
  30. "(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +
  31. "([^\"\\" + strDelimiter + "\\r\\n]*))"
  32. ),
  33. "gi"
  34. );
  35. var arrData = [[]];
  36. var arrMatches = null;
  37. while (arrMatches = objPattern.exec( strData )){
  38. var strMatchedDelimiter = arrMatches[ 1 ];
  39. if (strMatchedDelimiter.length && (strMatchedDelimiter != strDelimiter)){
  40. arrData.push( [] );
  41. }
  42. if (arrMatches[ 2 ]){
  43. var strMatchedValue = arrMatches[ 2 ].replace(
  44. new RegExp( "\"\"", "g" ),
  45. "\""
  46. );
  47. } else {
  48. var strMatchedValue = arrMatches[ 3 ];
  49. }
  50. arrData[ arrData.length - 1 ].push( strMatchedValue );
  51. }
  52. if(arrData.length>0){
  53. arrData.pop();
  54. }
  55. return arrData;
  56. }
  57. //用这个方法也可以
  58. public CSVStringToArrayJerry(strData: cc.Asset):any[]{
  59. let str = strData.toString().replace(/\r/g,"");
  60. let mapArr = str.split("\n");
  61. var array = [];
  62. for (let index = 0; index < mapArr.length; index++) {
  63. const element = mapArr[index];
  64. let arr = element.split(",");
  65. array[index] = arr;
  66. }
  67. return array;
  68. }
  69. }