首页 > 其他 > 详细

中文数字转数值

时间:2020-10-16 17:16:33      阅读:25      评论:0      收藏:0      [点我收藏+]

中文数字转数值,只支持整数

function toNumber(str) {
  const num = [‘零‘,‘一‘,‘二‘,‘三‘,‘四‘,‘五‘,‘六‘,‘七‘,‘八‘,‘九‘].indexOf(str)
  return num >=0 ? num : str
}
function isUnit(str) {
  switch (str) {
    case ‘十‘:
      return 10
    case ‘百‘:
      return 100
    case ‘千‘:
      return 1000
    case ‘万‘:
      return 10000
    case ‘亿‘:
      return 100000000
    default:
      return 0
  }
}
function cs2(arr, i) {
  let total = 0;
  for (;i >= 0;i-- ){
    const c = arr[i]
    if (!isUnit(c)) total += c
    else break
  }
  return total || 1
}
function cs1(arr) {
  const p = arr.reduce((p, v, i) => {
    if (isUnit(v)) {
      if(!i || !isUnit(arr[i - 1])) p.push(cs2(arr,i-1)*isUnit(v))
      else p.push(v)
    } else if (i===arr.length-1 && !isUnit(v)) {
      p.push(cs2(arr,i))
    }
    return p
  }, [])
  return p.some(s => isUnit(s)) ? cs1(p) : p.reduce((t, v) => t += v,0);
}
function cs(str) {
  const arr = str.split(‘‘).map(s => toNumber(s))
  return cs1(arr)
}


中文数字转数值

原文:https://www.cnblogs.com/qq3279338858/p/13825692.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!