Newer
Older
xc-business-system / src / utils / String.ts
lyg on 28 Apr 2024 1 KB 问题修改
// 字符串操作

// 1.去除字符串中的特殊符号
export const clearSymbol = (str: string) => {
  let string = ''
  // 替换字符串中的所有特殊字符(包含空格)
  const Exp = /[\-\_\,\!\|\~\`\(\)\#\$\%\^\&\*\{\}\:\;\"\L\<\>\±\<\≤\>\≥\<\>\+?]/g
  string = str.replace(Exp, '')
  return string
}
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
}