摘要:數字轉換成中文針對財務數據將金額數據轉換成大寫,在網上有很多例子,總感覺有更簡單的方式實現,下面是具體的源碼和探究。目前支持持位數,如果更大的數據可進行修正。
數字轉換成中文
針對財務數據將金額數據轉換成大寫,在網上有很多例子,總感覺有更簡單的方式實現,下面是具體的源碼和探究。如果疑問,或更好的建議歡迎留言,共同學習。
源碼class NumToZh_cn { numLevel = [ "", "拾", "佰", "仟", "萬", "拾", "佰", "仟", "億", "拾", "佰", "仟", "萬", "拾", "佰", "仟", "億" ] currencyUnit = [ "角", "分" ] numMapToCh = { "0": "零", "1": "壹", "2": "貳", "3": "叁", "4": "肆", "5": "伍", "6": "陸", "7": "柒", "8": "捌", "9": "玖" } _test( arr, item, index ){ const unit = this.numLevel[ arr.length - index - 1 ]; return item === "0" ? /(萬|億)/.test(unit) ? unit : "零" : this.numMapToCh[ item ] + unit; } _dataIntHandle( arr ){ return arr.map( ( item, index ) => this._test(arr, item, index ) ) .join("") .replace(/零+/g, "零" ) .replace(/零$/,"") + "元"; } _dataDeciHandle( arr ){ return arr.map( ( item, index ) => item === "0" ? "" : this.numMapToCh[ item ] + this.currencyUnit[ index ] ).join(""); } convert( numStr ){ numStr = "" + numStr; if( !/^d+(.d+)?$/.test( numStr.trim() ) ) throw "param is not number"; const [ x="", y="" ] = numStr.split("."); return this._dataIntHandle( x.split("") ) + this._dataDeciHandle( y.split("") ) + "整"; } } const numToZh_cn = new NumToZh_cn(); export { NumToZh_cn }源碼說明
通過 num 與中文的映射實現,避免了傳統的循環遍歷的實現方式。目前支持持17位數,如果更大的數據可進行修正。
numToZh_cn( 100400 ) // 壹拾萬零肆佰零元整
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/104067.html
摘要:過去工作中使用較多,碰到并解決了各種大大小小的問題,總結出這樣一篇文章,一方面記錄自己踩過的坑,一方面與大家分享,讓大家少走彎路,并不斷完善之,歡迎大家去上面和提交,不斷補充和優化,打造最全面的開發解決方案地址原文地址基礎小試牛刀引用文 過去工作中使用PHPExcel較多,碰到并解決了各種大大小小的問題,總結出這樣一篇文章,一方面記錄自己踩過的坑,一方面與大家分享,讓大家少走彎路,并不...
摘要:文章首發地址深入分析中的中文編碼問題背景編碼問題一直困擾著程序開發人員,尤其是在中更加明顯,因為是跨平臺的語言,在不同平臺的編碼之間的切換較多。 文章首發地址:深入分析 Java Web 中的中文編碼問題 背景: 編碼問題一直困擾著程序開發人員,尤其是在 Java 中更加明顯,因為 Java 是跨平臺的語言,在不同平臺的編碼之間的切換較多。接下來將介紹 Java 編碼問題出現的根本原...
閱讀 704·2021-11-22 13:54
閱讀 3065·2021-09-26 10:16
閱讀 3490·2021-09-08 09:35
閱讀 1576·2019-08-30 15:55
閱讀 3429·2019-08-30 15:54
閱讀 2075·2019-08-30 10:57
閱讀 497·2019-08-29 16:25
閱讀 877·2019-08-29 16:15