/** * 数字优化显示.按照.和中文分割,赋予不同样式 * @param val 数字 例如:12.23万 1234 * @param spiltPoint .是否分割 * */ type DataType = 'num' | 'character' | 'suffixNum'; type DataList = { type: DataType, text: string }[]; export const niceNumShow = (val?: number | string | null, spiltPoint = false): DataList => { if ((val !== 0 && !val) || val === '-') { return [{ type: 'num', text: '-' }]; } const resultList: DataList = []; const list = val.toString().split(''); let text = ''; let type: DataType | undefined; // 1: 数字 2: . 3: 非数字 list.forEach((character) => { let characterType: DataType = (/^[0-9\\.]*$/.test(character)) ? 'num' : 'character'; characterType = ( (character === '.' && spiltPoint) || (characterType === 'num' && type === 'suffixNum') ) ? 'suffixNum' : characterType; if (type !== characterType && type) { resultList.push({ type, text }); text = character; } else { text = `${text}${character}`; } type = characterType; }); type = type || 'num' resultList.push({ type, text }); return resultList; };