Google

TECHHOT

色々書いてます。プログラミングのことも使えるかなと思ったら書きます。個人でブログとは関係なく運営しているワークショップのことについてもいずれはまとめて書いていきます。

スポンサーリンク

javascriptで数字を漢数字に変換する方法|正規表現で日付を年月日に分ける

皆さんこんにちは。あんみつです。
更新頻度が低すぎるサイトへようこそ。

最近のwebサイトでは漢数字を扱っているような例を見たことないのでわかりませんが、私の最近の仕事で既存の書類作成業務の改修作業でjavascriptから数字を漢数字へ変換することをしたので若しかしたら、このナレッジ使う人いるんじゃね?と思い記事を書きました。

他のプログラミング記事は以下をご覧くだサイヤ人
techhot.hatenablog.com
techhot.hatenablog.com
techhot.hatenablog.com


そんなレガシーフォーマットの書類作成しないわ~っていうおちんこ殿はお帰り下さい。


数字を漢数字へ一文字ずつ変換する

  function tokanzi(befText){
    var txt = new Array("〇","一","二","三","四","五","六","七","八","九");
    var str = "";
    var c="";
    for(var i=0; i<befText.length; i++){
      c = txt[eval(befText.charAt(i))];
      str += c;
    }
    return str;
  }

この関数を呼び出すことで、21は二一となります。
使い方は以下です。

alert("変換したら漢数字になったお➝"+tokanzi(21));

引数に数字を入れると漢数字を投げ飛ばしてくれます。


ここで一つ問題が...
21は二一へ
90は九〇へ

二桁になった時に間に十が入らない事案が発生してしまってます。
和暦表記にした際に間に十が入らないので謎の漢数字の羅列に見えてしまう可能性があります。

安心してください。
それ用の関数作りました。

和暦表記の際の漢数字への変換

  function toKanziNum(num){
    var ten = "十";
    var kannum = new Array("〇","一","二","三","四","五","六","七","八","九");
    var strA="";
    var strB="";
    var length = num.length;
    if(length==1){
      return kannum[eval(num)];
    }else if(length==2){
      if(num.charAt(0)==1){
        if(num.charAt(1)==0){
          strA=ten;
        }else{
          strA=ten;
          strB=kannum[eval(num.charAt(1))];
        }
      }else{
        if(num.charAt(1)==0){
          strA=kannum[eval(num.charAt(0))];
          strB=ten;
        }else{
          strA=kannum[eval(num.charAt(0))]+ten;
          strB=kannum[eval(num.charAt(1))];
        }
      }
    }

    return strA+strB;
  }

これ使うことで
10は十へ
99は九十九になります

説明は書くのがMENNDOKUSAIので自力で読み取ってください。

オプションで年月日を正規表現で分ける関数を用意しました

  function date(str) {
      var date = str.match(/(\d+).(\d+).(\d+)/);
      var newDate = date[1]+"年"+date[2]+"月"+date[3]+"日";
      return newDate;
  }

date[1]には年、date[2]には月、date[3]には日が入ってます。
あとはdate[1]をtokanzi関数を使って変換するなり食べるなり自由に調理して楽しんでください。

記事公開30秒後、一つ気づいたので追記します。
西暦から和暦へ変換する関数書くの忘れてました。

  function yearF(year) {
      var val;
      if (year > 1988) { //平成
          val = year - 1988;
          val=toKannum(String(val));
          val = "平成" + val + "年"
      } else if (year > 1925) { //昭和
          val = year - 1925;
          val=toKannum(String(val));
          val = "昭和" + val + "年";
      }
      return val;
  }

なんと!オプションで「平成」と「年」を付けてくれますよ!!!!!ビュルッ

まとめ

今回はおいしいパンの作り方の記事を書きました。
久しぶりの料理記事なので、書き方とか忘れてましたが楽しく記事を書くことができました。
是非皆さんも自家製パンを作ってみてはどうでしょうか?

(適当)

天然酵母パン 12個セット

天然酵母パン 12個セット

毎日クロワッサン20個(ケース売り)

毎日クロワッサン20個(ケース売り)

おじいちゃんとパン

おじいちゃんとパン