vue 数字金额转大写方法
生活随笔
收集整理的這篇文章主要介紹了
vue 数字金额转大写方法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
**實(shí)現(xiàn)邏輯**億 仟 佰 拾 萬(wàn) 仟 佰 拾 元 角 分1 2 3 4 5 6 7 8 1 2 31 2 3 4 5 0 0 0 1 2 31 2 3 4 5 0 0 0 1 0 31 2 3 4 5 0 0 0 1 1 01 2 3 4 5 0 0 0 0 0 01、格式化入?yún)⑥D(zhuǎn)為字符串、去掉千分符不足兩位小數(shù)補(bǔ)零2、計(jì)算小數(shù)、整數(shù)長(zhǎng)度所有的數(shù)值對(duì)應(yīng)的漢字,進(jìn)制對(duì)應(yīng)單位3、數(shù)字轉(zhuǎn)大寫(xiě),添加進(jìn)制4、整數(shù)部分處理5、小數(shù)部分處理
<template><div><div><span>請(qǐng)輸入金額:</span><el-input placeholder="請(qǐng)輸入內(nèi)容" class="input-with-select" style="width:300px" v-model="amount"><el-button slot="append" icon="el-icon-circle-check" title="金額大寫(xiě)轉(zhuǎn)換" @click="gotoCapAmountFn"></el-button></el-input></div><div>{{capAmount|capAmountToString}}</div></div></template>
<script>
export default {data() {return{amount:"",capAmount:"",}},filters: {capAmountToString: function (values) {if(values === null || values === ''){return "";}values = values.toString();let reg = new RegExp(",");values = values.replace(reg, "");// 不足兩位小數(shù)補(bǔ)零let capArr = values.split(".");if (capArr.length < 2) {capArr[1] = "00";} else if (capArr[1].length == 1) {capArr[1] = capArr[1][0] + "0";}let len = capArr[0].length; //整數(shù)長(zhǎng)度let len2 = capArr[1].length; //小數(shù)長(zhǎng)度let arr = [],arr2 = [];let chin_list = ["零","壹","貳","叁","肆","伍","陸","柒","捌","玖",]; //所有的數(shù)值對(duì)應(yīng)的漢字let chin_lisp = ["仟","佰","拾","兆","仟","佰","拾","億","仟","佰","拾","萬(wàn)","仟","佰","拾",]; //進(jìn)制let chin_lisp2 = ["角", "分"]; //進(jìn)制// 數(shù)字轉(zhuǎn)大寫(xiě),添加進(jìn)制for (let i = 0; i < len; i++) {arr.push(parseInt(capArr[0][i])); //輸入的數(shù)據(jù)按下標(biāo)存進(jìn)去 存進(jìn)去的只是數(shù)字arr[i] = chin_list[arr[i]]; //是根據(jù)我們輸入的輸入的數(shù)字,對(duì)應(yīng)著我們的chin_list這個(gè)數(shù)組} for (let i = len - 1, j = 1; i > 0; i--) {//i =2 1 //倒序 為了添加進(jìn)制,方便我們?nèi)ビ^看arr.splice(i, 0, chin_lisp[chin_lisp.length - j++]); //j=2}for (let n = 0; n < len2; n++) {arr2.push(parseInt(capArr[1][n])); //輸入的數(shù)據(jù)按下標(biāo)存進(jìn)去 存進(jìn)去的只是數(shù)字arr2[n] = chin_list[arr2[n]]; //是根據(jù)我們輸入的輸入的數(shù)字,對(duì)應(yīng)著我們的chin_list這個(gè)數(shù)組}for (let i = len2, j = 1; i > 0; i--) {//i =2 1 //倒序 為了添加進(jìn)制,方便我們?nèi)ビ^看arr2.splice(i, 0, chin_lisp2[chin_lisp2.length - j++]); //j=2}arr = arr.join("");// 整數(shù)位處理if (len >= 1) {arr += "元";}//1234510001=>壹拾貳億叁仟肆佰伍拾壹萬(wàn)零壹元arr = arr.replace(/零[仟佰拾]/g, "零");//100051231 =>壹億零零零伍萬(wàn)壹仟貳佰叁拾壹arr = arr.replace(/零{2,}/g, "零");//壹億零零零伍萬(wàn)壹仟貳佰叁拾壹 =>壹億零伍萬(wàn)壹仟貳佰叁拾壹arr = arr.replace(/零([兆|億|萬(wàn)|元])/g, "$1")//12300000壹仟貳佰叁拾零萬(wàn)零元 =>壹仟貳佰叁拾萬(wàn)元 arr = arr.replace(/億零{0,3}萬(wàn)/, "億")//10000000123 =>壹佰億萬(wàn)零壹佰貳拾叁元 arr = arr.replace(/兆零{0,3}億/, "兆")//10000000000123 壹拾零兆億零壹佰貳拾叁元 =>arr = arr.replace(/^元/, "零元"); //0 ->零元// 小數(shù)位處理arr2 = arr2.join("");arr = arr + arr2;arr = arr.replace(/零角/, "零"); //11.01 壹拾壹元零角壹分 =>壹拾壹元零壹分arr = arr.replace(/零{1,2}分/, "整"); //return arr;},},methods: {gotoCapAmountFn(){this.capAmount = this.amount;} }
}</script>
總結(jié)
以上是生活随笔為你收集整理的vue 数字金额转大写方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 渗透测试
- 下一篇: vue兼容IE8以上解决方案