// 字符串操作 // 1.去除字符串中的特殊符号 export const clearSymbol = (str: any) => { str = String(str) if (!str) { return '' } if (str.includes('e') || str.includes('E')) { return str } let string = '' // 替换字符串中的所有特殊字符(包含空格) const Exp = /[\-\_\,\!\/\|\~\`\(\)\#\$\%\^\&\*\{\}\:\;\±\"\L\<\>\±\<\≤\>\≥\<\>\+?]/g string = (!isNaN(str) && typeof str === 'number' ? String(str) : str ? String(str) : '').replace(Exp, '') return string } // 去除字符串中的字母 export function removeLetters(str: string) { if (String(str) === '') { return '' } return String(str).replace(/[a-zA-Z]/g, '') } export const clearSymbolStart = (str: string) => { // const string = '' // 替换字符串中的所有特殊字符(包含空格) return str.substring(1, str.length) } /** * 四舍五入,保留指定小数位数,当原始数据不满足长度时,不要补 0 * @param number [Number | String] 原始数据,支持字符串和数值型 * @param i [Number] 保留的小数个数 >= 0 * @returns [Number] 转换后的数据 */ export function transformDecimal(number: string | number, i: number) { let decimalNum = null // 先转换为数值型 let num = Number(number) // 判断是否为数值型 if (!isNaN(num)) { // 切分整数与小数 const arr = num.toString().split('.') // 是小数且小数位大于保留个数 if (arr.length > 1 && arr[1].length > i) { // 小数部分字符串 const decimal = arr[1].slice(i, i + 1) // toFixed 有 bug,四舍六入五随机 // 当四舍五入的数为 5,给其 + 1 if (decimal === '5') { // 这里可能会存在 0.1 ** 5 = 0.000010000000000000003 但不影响四舍五入 num += 0.1 ** (i + 1) } decimalNum = num.toFixed(i) } else { decimalNum = num } decimalNum = Number(decimalNum) } return decimalNum }