跳到主要內容

工具庫 - 阿拉伯數字轉文字實作

前陣子有個需求是開發數字轉文字的功能
有來自中文使用者的客戶,也有來自其他外語客戶提出
問了法國人同事,法國裡面也有這樣的使用概念
所以應該是商業流程裡面有少部分場景需要此用法

查了是覺得這個不太好全自己動手
因為不同的語言在數字上都有獨特的限制
中文有少許特定規範,另外則是大小寫區分
雖說當我後來弄完後,覺得中文還是算比較簡單些
有個廣被提出的看法是,外國人普遍數學能力比中文語系的差是跟語言有關
太多的特例對於培養數字的抽象概念是不利的
例如對比 one、eleven、twenty one
中文的 一、一十一、二十一,是更能夠更加了解數字進位的抽象概念
更不用說其他特例比英文更多的語系了

總之對於特例太多,又有自己不熟悉的內容(外語)的先來看看有什麼輪子可以用

查了查覺得開源專案裡面比較符合自己需求的有以下兩個
1. Nzh    2. js-written-number 

Nzh 對於中文處理還算不錯,不過他跟外語是不同的處理系統
另外是我不需要再把文字轉回數字
js-written-number 有了很多語系的貢獻者,支援最多
不過不支援負數跟小數,另外再碰上科學符號時可能有誤差,不支援中文

這邊只好自己動手整理了下自己的版本
清理重複、不需要的內容(例如貨幣單位等等),調整變數名稱讓可讀性好一點
Java 版本   呼叫 String execute(String number, String lang, Map<String, Object> options) 執行
JS 版本  直接使用 Number2Word(number, lang, option);

lang 設定轉換的語言,目前支援 cht、chs、en、fr, 即 繁中、簡中、英文、法文
options 目前只有中文語系在用,就跟 Nzh 一致
有需要其他語系的可以再拉 js-written-number 的語系包進來
不過當然 code 就是得再跟著調整了

留言