export default {
  /**
   * 功能描述：计算文本的长度
   * @param strKit
   * @returns {number}
   */
  getByteLen(strKit) {
    let len = 0
    if (typeof strKit === 'string' && strKit.constructor === String) {
      for (let i = 0; i < strKit.length; i++) {
        if (strKit[i].match(/[^x00-xff]/ig)) { // 全角
          len += 2
        } else {
          len += 1
        }
      }
    }
    return len
  },
  cutoutChar(str, length = 2) {
    return str.match(/[\u4e00-\u9fa5]/g).splice(0, length).join('')
  },
  /**
   * 功能描述：格式化数字字段
   * 使用方式
   * import StrKit from '@/utils/str-kit'
   * StrKit.numberFormat(value)
   *
   * @param number 金额
   * @param thousand 千分位符号
   * @param decimal
   * @returns {string}
   */
  numberFormat(number, thousand, decimal) {
    number = number || 0
    thousand = thousand || ',' // 千分位分割符
    decimal = decimal || '.' // 小数位分割符
    const negative = number < 0 ? '-' : ''
    const i = parseInt(number = Math.abs(+number || 0).toFixed(0), 10) + ''
    const j = i.length > 3 ? i.length % 3 : 0
    return negative + (j ? i.substr(0, j) + thousand : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, '$1' + thousand)
  },
  /**
   * 功能描述：格式化金额字段
   * 使用方式
   * import StrKit from '@/utils/str-kit'
   * StrKit.moneyFormat(value)
   *
   * @param number 金额
   * @param places 小数点位数
   * @param symbol 货币符号
   * @param thousand 千分位符号
   * @param decimal
   * @returns {string}
   */
  moneyFormat(number, places, symbol, thousand, decimal) {
    number = number || 0
    places = !isNaN(places = Math.abs(places)) ? places : 2
    symbol = symbol !== undefined ? symbol : '¥' // 货币单位
    thousand = thousand || ',' // 千分位分割符
    decimal = decimal || '.' // 小数位分割符
    const negative = number < 0 ? '-' : ''
    const i = parseInt(number = Math.abs(+number || 0).toFixed(places), 10) + ''
    const j = i.length > 3 ? i.length % 3 : 0
    return symbol + negative + (j ? i.substr(0, j) + thousand : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, '$1' + thousand) + (places ? decimal + Math.abs(number - i).toFixed(places).slice(2) : '')
  }
}
