6. 漢数字変換(桁付き)

数字を漢数字に変換します、アクセスカウンターにつかえるかも?

[実行結果]

漢数字変換

入力
出力

使い方

入力に数値をいれて「変換」を押すだけです。
無意味に無量大数まで対応、つまり1068まで対応しています。

いまいち使い道が見つからないけどアクセスカウンターとかに使ったら面白いかも。

ちなみに
入力
出力

んなことも出来ます。

[プログラム]

<script type="text/javascript" charset="Shift_JIS">
function Henkan(){
   	document.form1.text2.value=Transformation(NumChange(document.form1.text1.value));
}

////////////////////////////////
/*数値を漢字に変換  123→壱弐参*/
/*0は変換しない                */
/*引き値 変換する数値          */
/*戻り値 漢字に変換した数値    */
///////////////////////////////
function NumChange(InputNum){
   var StrChenge;   //数値を漢字へ
   var BlockNum=""; //変換した値を保管

   for(i=0;i<InputNum.length;i++){
      StrChenge=Number(InputNum.charAt(i));

      switch(StrChenge){
         case 1:
            StrChenge="壱";
            break;
         case 2:
            StrChenge="弐";
            break;
         case 3:
            StrChenge="参";
            break;
         case 4:
            StrChenge="肆";
            break;
         case 5:
            StrChenge="伍";
            break;
         case 6:
            StrChenge="陸";
            break;
         case 7:
            StrChenge="漆";
            break;
         case 8:
            StrChenge="捌";
            break;
         case 9:
            StrChenge="玖";
      }
      BlockNum=BlockNum+StrChenge;
   }
   return BlockNum;
}


////////////////////////////////////
/*桁をつける  12345→1万2千3百4拾5*/
/*引き値 変換する数値            */
/*戻り値 桁をつけた数値          */
///////////////////////////////////
function Transformation(BlockNum){
   var PickOut;     //数値を4つに区切った値
   var PickOutLen;  //区切った値の数
   var SetFigure;   //桁の種類
   var Counter=0;   //ループの回数をカウント
   var Figure1;     //区切った値の一桁目
   var Figure2;     //区切った値の二桁目
   var Figure3;     //区切った値の三桁目
   var Figure4;     //区切った値の四桁目
   var SetTxt;      //桁をつけた数値を統合
   var FigureCount; //何桁目
   var TxtOut="";   //結果の出力

   for(i=InputNum.length;(i+Counter)>(InputNum.length/4);i-=4){
      Figure1="";
      Figure2="";
      Figure3="";
      Figure4="";
      SetTxt="";
      FigureCount=0;

      PickOut=BlockNum.substring(i,i-4);
      PickOutLen=PickOut.length;

      switch(PickOutLen){
         case 4:
            Figure4=PickOut.charAt(PullOut(FigureCount));
            if(Figure4 != 0)   Figure4=Figure4+"千";
            FigureCount++;
         case 3:
            Figure3=PickOut.charAt(PullOut(FigureCount));
            if(Figure3 != 0)   Figure3=Figure3+"百";
            FigureCount++;
         case 2:
            Figure2=PickOut.charAt(PullOut(FigureCount));
            if(Figure2 != 0)   Figure2=Figure2+"拾";
            FigureCount++;
         case 1:
            Figure1=PickOut.charAt(PullOut(FigureCount));
      }

      SetFigure=new Array("","万","億","兆","京","垓","杼","穰","溝","澗","正","載","極","恒河沙","阿僧祇","那由他","不可思議","無量大数");

      SetTxt=Figure4+Figure3+Figure2+Figure1;

      if(Counter >= 18){
         TxtOut="Error 数値が大きすぎます。"
         break;
      }

      if(SetTxt != "0000"){
            TxtOut=SetTxt+SetFigure[Counter]+TxtOut;
      }else{
            TxtOut=SetTxt+TxtOut;
      }

      for(j=0;j<=4;j++)   TxtOut=TxtOut.replace("0","");

      Counter++;
   }

   function PullOut(Num)
   {
      var AtNum;

      if(Num <= 0){
         AtNum=0;
      }else if(Num <= 1){
         AtNum=1;
      }else if(Num <= 2){
         AtNum=2;
      }else if(Num <= 3){
         AtNum=3;
      }
      return AtNum;
   }

   return TxtOut;
}
</script>

<form name="form1">
   入力<input type="text" size="20" name="text1" id="text1" value="123456789" /><br />
   出力<input type="text" size="50" name="text2" id="text2" /><br />
   <input type="button" name="button1" value="変換" onclick="Henkan()" />
</form>

[裏話]

えーっと、本当は02/01/04に作ったからExtraの一番頭にくるはずだったはずだが忘れさられて今ごろきましたw

そんなわけだし、えらく見にくいプログラムだったんで全体的に修正しました。 修正前は02/01/04の日記でみれます。 変数めちゃくちゃでスゲー見にくいですが。

作り直したら結構いい感じでできました。引き値とか戻り値がうまく使えたなぁ、と。 んで、一応汎用性があります。


© 2000-2003 Tsukimi / HobbySpace