[3]. 数字字符串格式化

1、问题描述

小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉。请你帮助小M编写程序,完成这个任务。

2、测试样例

样例1:

输入:s = "1294512.12412"
输出:'1,294,512.12412'

样例2:

输入:s = "0000123456789.99"
输出:'123,456,789.99'

样例3:

输入:s = "987654321"
输出:'987,654,321'

3、解题思路

1、将数据按‘.’进行分割
2、先将整数转为字符串类型(确保整数前面多余的0去掉),然后进行每隔3位添加逗号
3、最后将处理好的数据进行返回

function solution(s) {
    // 先解析出整数部分和小数部分
    const [ integerNumber, decimalNumber = null] = s.split('.');

    // 将整数部分转换为数组,并且反转,然后通过取余的方式去加逗号,再反转回来
    const result = BigInt(integerNumber).toString().split('').reverse().reduce((list, item, index) => {
        if (index > 0 && index % 3 === 0) {
            list.push(',')
        }
        list.push(item)
        return list
    }, []).reverse().join('')
    
    // 如果有小数部分,则添加上去
    return !decimalNumber ? result : `${result}.${decimalNumber}`;
}

function main() {
    console.log(solution("77134900601876576") === "77,134,900,601,876,576");
    console.log(solution("0000123456789.99") === '123,456,789.99');
    console.log(solution("987654321") === '987,654,321');
}

main();

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容