数字を漢数字に変換します、アクセスカウンターにつかえるかも?
入力に数値をいれて「変換」を押すだけです。
無意味に無量大数まで対応、つまり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の日記でみれます。 変数めちゃくちゃでスゲー見にくいですが。
作り直したら結構いい感じでできました。引き値とか戻り値がうまく使えたなぁ、と。 んで、一応汎用性があります。