| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- /**
- * 字符串工具类
- * @author 薛鸿潇
- */
- export default class StringUtil {
- /**
- * 颜色表
- */
- private str_color = {
- /** 红色1 */
- red1: '#be2c1d',
- /** 棕色1 */
- bro1: '#4E301B',
- }
- /**
- * 将数据表里的字符串转成相对颜色
- * @param 需要转换的字符串 比如 "你好[red中国]" 其中“中国”为红色...你好[red{s40}中国]
- * @return 返回一个富文本字符串
- * @author xhx
- */
- public getTextByStringInData(str: string): string {
- var newStr: string = str;
- var i: number = 0;
- var begin: number;
- var end: number;
- var sub: string;
- var searchValue: string;
- var replaceValue: string;
- var color_key: string;
- // 解析颜色
- while (i < str.length) {
- begin = str.indexOf("[", i);
- end = str.indexOf("]", begin);
- if (begin != -1 && end != -1)//把[redXXX]转成富文本
- {
- searchValue = str.slice(begin, end + 1);
- // 颜色内容
- color_key = str.slice(begin + 1, begin + 5);
- let color_str = this.str_color[color_key]
- if (color_str) {
- sub = str.slice(begin + 6, end);
- replaceValue = this.getColorStringColor(sub, color_str);
- newStr = newStr.replace(searchValue, replaceValue);
- }
- i = end;
- }
- else {
- break;
- }
- }
- let size_index: number = 0;
- let size_begin: number = 0;
- let size_end: number = 0;
- let size_searchValue: string;
- // let size_sub: string
- // 解析尺寸{40=100%},100%是40尺寸.例子2:[bro对目标造成][red{40=104%}][bro攻击伤害]
- while (size_index < newStr.length) {
- size_begin = newStr.indexOf("{", size_index);
- size_end = newStr.indexOf("}", size_begin);
- if (size_begin != -1 && size_end != -1) {
- // 尺寸内容
- size_searchValue = newStr.slice(size_begin, size_end + 1);
- let size_value = newStr.slice(size_begin + 1, size_begin + 3);
- let size_sub = size_searchValue.slice(4, size_searchValue.length - 1);
- if (size_sub) {
- let new_value = '<size = ' + size_value + '>' + size_sub + '</color>';
- newStr = newStr.replace(size_searchValue, new_value);
- }
- size_index = size_end;
- } else {
- break;
- }
- }
- return newStr;
- }
- /**按品质转换字符串颜色 */
- private getColorStringColor(str: string = '#FFFFFF', color_str: string): string {
- return '<color=' + color_str + '>' + str + '</color>';
- }
- /**
- * 阿拉伯数字 转 汉字
- * @param num 要转的数字
- * @returns 汉字数字
- * @author xhx
- */
- public arabicToChinese(num: number): string {
- let unit_section = ['', '万', '亿', '万亿', '亿亿'];
- let unit_chn = ['', '十', '百', '千'];
- let chars = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
- let unit_index = 0;
- let str_ins = '', zh_str = '';
- let need_zero = false;
- let SectionToChinese = function (section) {
- let _zh_str = '';
- let _unit_index = 0;
- let zero = true;
- while (section > 0) {
- let v = section % 10;
- let _str_ins = '';
- if (v === 0) {
- if (!zero) {
- zero = true;
- _zh_str = chars[v] + _zh_str;
- }
- } else {
- zero = false;
- if (_unit_index !== 1 || section > 1) {
- _str_ins = chars[v];
- }
- _str_ins += unit_chn[_unit_index];
- _zh_str = _str_ins + _zh_str;
- }
- ++_unit_index;
- section = Math.floor(section / 10);
- }
- return _zh_str;
- };
- if (num === 0) {
- return chars[0];
- }
- while (num > 0) {
- let section = num % 10000;
- if (need_zero) {
- zh_str = chars[0] + zh_str;
- }
- str_ins = SectionToChinese(section);
- str_ins += (section !== 0) ? unit_section[unit_index] : unit_section[0];
- zh_str = str_ins + zh_str;
- need_zero = (section < 1000) && (section > 0);
- num = Math.floor(num / 10000);
- ++unit_index;
- }
- return zh_str;
- }
- /**
- * 限制字符串长度,超出部分用...代替
- * @param str 要拆分的字符串
- * @param max_len 最大长度
- * @returns 被限制后的字符串
- * @author xhx
- */
- public getNewLimitStr(str: string, max_len: number) {
- let arr_str = str.split("");
- let new_str = '';
- max_len = arr_str.length >= max_len ? max_len : arr_str.length;//字符串不能超出的长度,否则用...显示
- for (let i = 0; i < max_len; i++) {
- if (i == (max_len - 1)) {
- new_str += '...';
- } else {
- new_str += arr_str[i];
- }
- }
- return new_str;
- }
- }
|