CODE - 數字轉英文 C# 函式庫

專案遇上數字轉成英文的需求,例如:1234 需轉為 one thousand two hundred thirty four。

網路上有許多解決方案,程式範例、現成函式庫都有,選擇眾多之下,透過 NuGet 即裝即用才是王道。我找到一個,在 NuGet 搜尋 NUT,第一筆 Nut, Number To Text Converter & Money To Text Converter:

程式為 Open Source, 使用說明與原始碼在 Github 上: https://github.com/emrahyumuk/NUT-number-to-text。使用說明略嫌簡略,「Use the source, Luke!」 所有的疑問看完程式碼全明白了。

Nut 程式庫在 long、int 及 decimal 加了擴充方法(所以要記得 using Nut),透過 ToText() 即可數字轉英文字:

using Nut;
using System;
 
namespace N2T
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 123456;
            Console.WriteLine(i.ToText("en"));
 
            decimal n = 123456.78m;
            Console.WriteLine(n.ToText(Nut.Currency.USD, "en"));
            Console.Read();
       }
    }
}

測試結果如下:
one hundred twenty three thousand four hundred fifty six
one hundred twenty three thousand four hundred fifty six dollars seventy eight cents

轉換整數時 ToText() 可傳入語系參數轉成不同語言,程式支援英文、法文、俄文、西班牙文、土耳其文跟烏克蘭文。語系預設為英文,要轉英文不傳參數也可。含小數數字轉英文多用於表示金額,數字需用 decimal 型別,第一個參數傳入幣別決定幣值單元,例如美元是 dollar/cent、歐元是 euro/eurocent、俄羅斯是 ruble/kopek … 等,第二個參數可傳入語系。另外還有一些進階選項可設定第一個字母要不要大寫、零要不要顯示… 等,Github 原始碼附了一個 Nut.Demo 專案貼心提供選項展示及試玩。如果用得不開心,Fork 專案改成你要的樣子吧,充分體現 Open Source 精神~

愈來愈感受到 Github、NuGet 已讓程式開發產生變革,當常見需求幾乎都能快速找到現成且可修改的解決方案,排除這些瑣碎需求的牽絆,開發者更能專注核心商業邏輯,開發節奏就加快了。但負面效應也隨之而來-愈來愈短的開發時程要求、愈來愈難開口說「我做不出來」、後浪挾資訊流通之便來勢洶洶… 嗯,開發生涯好像也變幸福耶,哈!

【同場加映】阿拉伯數字轉中文大寫

歡迎推文分享:
Published 30 June 2017 11:39 PM 由 Jeffrey
Filed under: ,
Views: 4,046



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<June 2017>
SunMonTueWedThuFriSat
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication