讲解JavaScript实现阿拉伯数字和中文数字互相转换的完整攻略如下:
1. 阿拉伯数字转中文数字
1.1 前置知识
阿拉伯数字是我们常用的数字,0-9;而中文数字是汉字所表达的数字,例如:一、二、三、四、五等。
1.2 实现步骤
步骤如下:
- 定义一个数组numList,包含中文数字对应的字符串;
const numList = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
-
传入需要转换的阿拉伯数字num,进行判断:
-
如果num小于10,直接返回numList[num]
-
如果num大于10但小于20,直接返回"十" + numList[num % 10]
-
如果num大于等于20,先计算十位数位值,再计算个位数位值:
function toChineseNumber(num) {
const numList = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
if (num < 10) return numList[num];
if (num >= 10 && num < 20) return "十" + numList[num % 10];
const ten = Math.floor(num / 10);
const unit = num % 10;
if (unit === 0) return numList[ten] + "十";
return numList[ten] + "十" + numList[unit];
}
1.3 示例说明
console.log(toChineseNumber(123)); // 一百二十三
console.log(toChineseNumber(5)); // 五
console.log(toChineseNumber(10)); // 十
console.log(toChineseNumber(20)); // 二十
console.log(toChineseNumber(98)); // 九十八
2. 中文数字转阿拉伯数字
2.1 前置知识
中文数字是我们常见的汉字所表达的数字,例如:一、二、三、四、五等;而阿拉伯数字是我们平时常用的数字,0-9。
2.2 实现步骤
步骤如下:
- 定义一个数组numList,包含中文数字对应的数字;
const numList = {'零': 0, '一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九': 9, '十': 10};
-
传入需要转换的中文数字num,进行判断:
-
如果num只有一位且不是“十”,则直接查表返回numList[num]
-
如果num包含“十”则需要判断:
-
如果num以“十”开头,则说明个位数是0,截取字符串第二位作为十位数,然后转换成数字。
-
如果num以“十”结尾,则说明十位数是1,截取字符串第一位作为个位数,然后转换成数字。
-
如果num包含“十”但不以“十”开头或结尾,则需要分别截取字符串的前两位和后两位,然后分别转换成数字求得十位数和个位数。
-
function toArabicNumber(num) {
const numList = {'零': 0, '一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九': 9, '十': 10};
if (numList[num]) return numList[num];
const tenIdx = num.indexOf("十");
if (tenIdx === 0) return toArabicNumber(num.substr(1)) + 10;
if (tenIdx === num.length - 1) return toArabicNumber(num.substr(0, num.length - 1)) * 10 + 10;
return toArabicNumber(num.substr(0, tenIdx)) * 10 + toArabicNumber(num.substr(tenIdx + 1));
}
2.3 示例说明
console.log(toArabicNumber("一百二十三")); // 123
console.log(toArabicNumber("五")); // 5
console.log(toArabicNumber("十")); // 10
console.log(toArabicNumber("二十")); // 20
console.log(toArabicNumber("九十八")); // 98
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现阿拉伯数字和中文数字互相转换 - Python技术站