题解 | #人民币转换#仅供参考
人民币转换
https://www.nowcoder.com/practice/00ffd656b9604d1998e966d555005a4b?tpId=37&tqId=21318&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26pageSize%3D50%26search%3D%25E4%25BA%25BA%25E6%25B0%2591%25E5%25B8%2581%26tpId%3D37%26type%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=%E4%BA%BA%E6%B0%91%E5%B8%81
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
let line = await readline()
let [num1, num2] = line.split(".")
const strs = num1.replace(/(?=(\d{4})+$)/g, ".").split('.').filter(Boolean)
// console.log(strs)
const chars = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']
const unit = ['', '拾', '佰', '仟']
const bigUnit = ['', '万', '亿']
// 转换四位以下的数字
function _transform(numStr){
let result = ''
for(let i=0; i<numStr.length; i++){
const digit = +numStr[i]
const c = chars[digit]
const u = unit[numStr.length - i - 1]
// 如果digit为'0',则不加单位
if(digit===0){
// 如果result末尾不是'零',才可以加
if(result[result.length-1] !== chars[0]){
result += c
}
}else{
result += c+u
}
}
if(result[result.length-1]===chars[0]){
result = result.slice(0, -1)
}
return result
}
// _transform('1200')
let result = '人民币'
for(let i=0; i<strs.length; i++){
const part = strs[i]
const c = _transform(part)
const u = c ? bigUnit[strs.length - i - 1] : ''
result += c+u
}
// console.log(result)
if(result !== '人民币'){
result = (result + '元').replace(/壹拾/g,'拾')
}
if(num2 === '00'){
result += '整'
}else{
if(num2[0] !== '0'){
result += chars[num2[0]] + '角'
}
if(num2[1] !== '0'){
result += chars[num2[1]] + '分'
}
}
console.log(result)
})()

