字符串金額轉化為指定格式的貨幣格式


前言

做金融項目的時候,接觸的大量數字字符串往往需要格式化顯示,這里我寫了一個demo,將字符串金額格式化,可以保留小數位數,可以添加貨幣標識前綴。

寫在string的原型里面,需要格式化的時候直接格式化唄!

例:'123345.23123'.moneyFormatter(2,'¥')

輸出: '¥123,345.23'

demo有注釋,我就不多做說明了

我的demo

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    //金額格式轉化
    String.prototype.moneyFormatter = function(n,current){  //n為保留的小數點位數,不傳則不處理,current為前面加上的貨幣符號,必須是字符串,例'$','¥'
        var moneyStr = this;
        if(moneyStr.indexOf('.') == -1){  //如果不是小數
            var len = moneyStr.length; //金額長度
            var arr = []; //保存分割后的字符串
            var num = Math.floor(len/3);//循環分割次數
            var firstLen = len%3;
            var firstStr = moneyStr.substr(0,firstLen); //分割的起始第一部分
            if(firstStr.length > 0){
                arr.push(firstStr);
            }
            for(var i=0;i<num;i++){ //后續部分循環
                arr.push(moneyStr.substr(i*3+firstLen,3))
            }
            if(current && typeof(current) == 'string'){
                return current + arr.join(','); //返回格式化后的字符串
            }else{
                return arr.join(','); //返回格式化后的字符串
            }

        }else{ //如果是小數
            if(n){ //如果傳入了需要保留的小數位數
                moneyStr = String(Number(moneyStr).toFixed(n))
            }
            var moneyStr1 = moneyStr.split('.')[0]; //金額整數部分
            var moneyStr2 = moneyStr.split('.')[1]; //金額小數部分
            var len1 = moneyStr1.length; //金額整數部分長度
            var arr1 = []; //保存整數部分分割后的字符串
            var num1 = Math.floor(len1/3);//循環分割次數
            var firstLen1 = len1%3;
            var firstStr1 = moneyStr.substr(0,firstLen1); //分割的起始第一部分
            if(firstStr1.length > 0){
                arr1.push(firstStr1);
            }
            for(var i=0;i<num1;i++){ //后續部分循環
                arr1.push(moneyStr1.substr(i*3+firstLen,3))
            }
            var newMoneyStr1 = arr1.join(',');
            //整數部分處理完畢
            if(current && typeof(current) == 'string'){
                return current + newMoneyStr1+'.'+moneyStr2; //返回格式化后的字符串
            }else{
                return newMoneyStr1+'.'+moneyStr2; //返回格式化后的字符串
            }
        }
    }
</script>
</body>
</html>

 簡介

 接受兩次參數,n和current,不傳則不處理,如果要傳入需要指定順序傳入,先傳n,n為需要保留幾位小數,再傳current為如果要加上貨幣前綴就直接傳入!

方法內部默認是標准金錢展現形式,3位一個',',就不再進行參數靈活控制了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM