2010/10/26

[C#]数字を漢数字に変換する

このエントリーをはてなブックマークに追加

数字を漢数字に変換する

数字を漢数字に変換する関数です。
12345は「一万二千三百四十五」、11111は「一万千百十一」、100000001は「一億一」にならないといけません。
要点は三つ。
  1. 間に数がないときは万、億、兆(大数という)を足さない。
  2. 位の数が1のとき、十、百、千の桁には一を足さない。
  3. 0のときは詰める。

ソースコード
private string toKansuji(long number) {
    if (number == 0) {
        return "〇";
    }
        
    string[] kl = new string[] { "", "十", "百", "千" };
    string[] tl = new string[] { "", "万", "億", "兆", "京" };
    string[] nl = new string[] { "", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
    string str = "";
    int keta = 0;
    while (number > 0) {
        int k = keta % 4;
        int n = (int)(number % 10);
                
        if (k == 0 && number % 10000 > 0) {
            str = tl[keta / 4] + str;
        }
                
        if (k != 0 && n == 1) {
            str = kl[k] + str;
        } else if (n != 0) {
            str = nl[n] + kl[k] + str;
        }
                
        keta++;
        number /= 10;
    }
    return str;
}

昔書いたテーマを思い起こしてみたものですが、「どう書く?」のお題になってたようでした。
まあ、みんな似たようなコードになりますな。

どう書く?org - 整数の漢数字表記
http://ja.doukaku.org/38/

0 件のコメント :

コメントを投稿