例子:9242384235 转为:九十二亿四千两百三十八万四千两百三十五
只做了千亿内的数字的转换!!
var numsArr = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"]
function getChinese (num) {
let chinese = []
num = num.toString()
// 将数字转为字符并替换成中文放进chinese数组
for (let i of num) {
chinese.push(numsArr[i])
}
if (chinese.length == 1) return chinese[0]
return getNumBySpilt(chinese)
}
function getNumBySpilt (chi) {
chi = chi.join('')
let arr = []
let len = chi.length % 4
// 将数字按照【亿】【万】单位分成数组
if (len !== 0) {
arr.push(chi.slice(0, len))
if (chi.length > 4) {
chi = chi.slice(len, chi.length)
let temp = chi.match(/.{1,4}/g)
arr = arr.concat(temp)
}
}
let temps = []
let str = ["万", "亿", "万", "亿"]
let count = 0
arr.forEach((item, index) => {
arr[index] = checkItem(item, index)
})
for (let i = arr.length - 1; i >= 0; i--) {
if (count == 1 && arr[i] !== "") {
temps.unshift(["万"])
} else if (count == 2) {
temps.unshift(["亿"])
}
temps.unshift(arr[i])
count++
}
temps = temps.join("")
return temps.split(",").join("")
}
function checkItem (item, index) {
let items = []
let zero = 0
for (let i = item.length - 1; i >= 0; i--) {
if (item[i] == "零") zero++
if (i == item.length - 2 && item[i] !== "零") {
items.unshift("十")
}
if (i == item.length - 3 && item[i] !== "零") {
items.unshift("百")
}
if (i == item.length - 4 && item[i] !== "零") {
items.unshift("千")
}
// 判断每个数组的最后一位是否为零
let endIFlag = i == item.length - 1 && item[i] == "零";
// 判断每个数组的二三位以及它的前后元素是否都为零
let centerIFlag = item[i] == "零" && item[i - 1] === "零" && item[0] == "零"
// 判断每个数组的倒数第二位以及它后面的元素是否为零
let secendIFlag1 = i == item.length - 2 && item[i] == "零" && item[i + 1] == "零"
// 判断每个数组的第二位以及它后面的元素是否为零
let secendIFlag = item[i] == "零" && i == 1 && item[i + 1] === "零"
if (!endIFlag && !centerIFlag && !secendIFlag1 && !secendIFlag) {
items.unshift(item[i])
}
}
// 该数组全为零时返回“”
if (zero == 4) return ""
// 对“一十万”“一十亿”的情况作处理,改为“十万”“十亿”
for (let i = 0; i < items.length; i++) {
if (items[i] == "一" && items[i + 1] == "十" && i + 2 == items.length) {
items.splice(i, 1)
}
}
return items
}
let num = 1090720500
console.log(getChinese(num));
let num1 = 10700
console.log(getChinese(num1));
let num2 = 20
console.log(getChinese(num2));

有问题欢迎在评论区指正!!

509

被折叠的 条评论
为什么被折叠?



