StringUtil.ts 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. import { JsonAsset } from "cc";
  2. import { MathUtil } from "./MathUtil";
  3. const chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split("");
  4. export class StringUtil {
  5. /**
  6. * 得到一个唯一值
  7. * @param len 长度
  8. * @param radix 进制
  9. */
  10. static getUUID(len: number = 12, radix: number = 16) {
  11. let uuid = [];
  12. radix = radix || chars.length;
  13. if (len) {
  14. for (let i = 0; i < len; ++i)
  15. uuid[i] = chars[0 | Math.random() * radix];
  16. } else {
  17. uuid[8] = uuid[13] = uuid[18] = uuid[23] = "-";
  18. uuid[14] = "4";
  19. for (let i = 0; i < 36; ++i) {
  20. if (!uuid[i]) {
  21. let r = 0 | Math.random() * 16;
  22. uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
  23. }
  24. }
  25. }
  26. return uuid.join("");
  27. }
  28. /**
  29. * 解析配置表内容
  30. * @param str 配置表中内容 1:20#2:20
  31. * */
  32. static analysisConfStr(str) {
  33. let replaceStr = str.replaceAll('#', ',"')
  34. replaceStr = replaceStr.replaceAll(':', '":')
  35. let ObjStr = `{"${replaceStr}}`
  36. let Json = JSON.parse(ObjStr)
  37. return Json
  38. }
  39. /**
  40. * 解析配置表内容
  41. * @param str 配置表中内容 {"123":123}#{"1232":123}
  42. * */
  43. static analysisConfStrA(str) {
  44. let replaceStr = str.replaceAll('#', ',')
  45. let Json = JSON.parse(`[${replaceStr}]`)
  46. return Json
  47. }
  48. /**
  49. * 解析配置表内容
  50. * @param str 配置表中内容 attack#hp#defence#speed
  51. * */
  52. static analysisConfStrE(str) {
  53. let replaceStr = str.replaceAll('#', '","');
  54. let Json = JSON.parse(`["${replaceStr}"]`)
  55. return Json
  56. }
  57. /**
  58. * 解析配置表内容
  59. * @param str 配置表中内容 speed:60
  60. * */
  61. static analysisConfStrB(str) {
  62. let replaceStr = str.replaceAll(':', ',')
  63. let Json = JSON.parse(`[${replaceStr}]`)
  64. return Json
  65. }
  66. /**
  67. * 解析配置表内容
  68. * @param str 配置表中内容 speed:14,hp:500,attack:105,defence:38#speed:14,hp:500,attack:105,defence:50
  69. * */
  70. static analysisConfStrC(str) {
  71. let replaceStr = str.replaceAll(',', ',"')
  72. replaceStr = replaceStr.replaceAll('#', '}],[{"')
  73. replaceStr = replaceStr.replaceAll(':', '":')
  74. let Json = JSON.parse(`[[{"${replaceStr}}]]`)
  75. // speed":14,"hp":500,"attack":105,"defence":38],["speed":14,"hp":500,"attack":105,"defence":50]]
  76. // let strA =[{speed:14,hp:500,attack":105,defence":38},{speed:14,hp:500,attack:105}]
  77. return Json
  78. }
  79. /**
  80. * 解析配置表内容
  81. * @param str 配置表中内容 90100201:1000,90100202:1000
  82. * */
  83. static analysisConfStrD(str) {
  84. let replaceStr = str.replaceAll(',', ',"')
  85. replaceStr = replaceStr.replaceAll(':', '":')
  86. let Json = JSON.parse(`{"${replaceStr}}`)
  87. // speed":14,"hp":500,"attack":105,"defence":38],["speed":14,"hp":500,"attack":105,"defence":50]]
  88. // let strA =[{speed:14,hp:500,attack":105,defence":38},{speed:14,hp:500,attack:105}]
  89. return Json
  90. }
  91. /**
  92. * 解析配置奖励内容
  93. * @param str 配置表中内容 material.1:100#material.1:100
  94. * */
  95. static analysisConfStrM(str) {
  96. let value = [];
  97. var allValue = [];
  98. var allAward = str.split('#');
  99. for (var n = 0; n < allAward.length; n++) {
  100. var oneAward = allAward[n].split(':');
  101. if (2 == oneAward.length) {
  102. value = oneAward[0].split('.');
  103. value.push(+oneAward[1]);
  104. } else {
  105. value = null;
  106. }
  107. allValue.push(value);
  108. }
  109. value = allValue;
  110. return value
  111. }
  112. /**
  113. * 概率计算
  114. * @param total 所有和
  115. * @param num 当前数值
  116. * */
  117. static oodsCount(total, num) {
  118. return MathUtil.accMul(num / total, 100) + '%';
  119. }
  120. /**
  121. * 格式化字符串
  122. * @param str 目标字符串
  123. * @param val 自定义参数
  124. */
  125. static format(str: string, ...val: any[]) {
  126. //format("{0} is {1} {2}", "This", "formatting", "hack");
  127. for (let i = 0; i < val.length; ++i) {
  128. str = str.replace(`{${i}}`, val[i].toString());
  129. }
  130. return str;
  131. }
  132. /**
  133. * 格式化数字,12345 = 12.35K
  134. * @param value 数字
  135. * @param fixed 保留小数位
  136. */
  137. static numberToThousand(value: number, fixed: number = 2) {
  138. let k = 1000;
  139. let sizes = ["", "K", "M", "G"];
  140. if (value < k) {
  141. return value.toString();
  142. } else {
  143. let i = Math.floor(Math.log(value) / Math.log(k));
  144. let r = ((value / Math.pow(k, i)));
  145. return r.toFixed(fixed) + sizes[i];
  146. }
  147. }
  148. /**
  149. * 格式化数字,12345 = 12345 = 1.23万
  150. * @param value 数字
  151. * @param fixed 保留小数位
  152. */
  153. static numberToTenThousand(value: number, fixed: number = 2) {
  154. let k = 10000;
  155. let sizes = ["", "万", "亿", "万亿"];
  156. if (value < k) {
  157. let count = value
  158. if (value.toString().length > 8) {
  159. count = Number(value.toFixed(2))
  160. }
  161. return count.toString();
  162. } else {
  163. let i = Math.floor(Math.log(value) / Math.log(k));
  164. // let count = ((value / Math.pow(k, i))).toFixed(fixed) + sizes[i];
  165. return ((value / Math.pow(k, i))).toFixed(fixed) + sizes[i];
  166. }
  167. }
  168. }