JavaScriptで数値を漢数字に変換する
俺様仕様。
使おうと思ったらまともに動かなかった!なんで?
ということで書き直した。
動かしているうちに短くなってしまった
もう少し煮詰めれば、さらに短くなりそうなのだけれど…
今日は終了!
function kansuji(a,t=0,r='',N=[...'〇一二三四五六七八九'],M=['',...'十百千'],K=['',...'万億兆京垓𥝱穣溝澗']){ return(''+a).replace(/(\d+)/g,a=>{ if(t||'0'==a)return[...a].map(n=>N[n]).join``; [...a].reverse().map((n,i)=>r=((n-=0)&&i%4&&n==1?'':N[n])+M[i%4]+(i%4?r:K[(i/4)|0]+r)) return r; }) }
前に書いて動かなかったやつ
function kansuji(a,t=0,r='',N=[...'〇一二三四五六七八九'],M=['',...'十百千'],K=['',...'万億兆京垓𥝱穣溝澗']){ return(''+a).replace(/(\d+)/g,a=>{ if(t||'0'==a)return[...a].map(n=>N[n]).join``; [...a].reverse().map((n,i)=>r=(((n-=0)==1&&i%4||!n)?'': N[n])+M[i%4]+(i%4?r:K[(i/4)|0]+r)) return r; }) } [ "洋野町第123地割4567番地890123", 0, 10, 11, 12, 100, 111, 123, 1000, 1111, 1234, 10000, 11111, 12345, 100000, 111111, 123456, 1000000, 1111111, 1234567, 10000000, 11111111, 12345678, 100000000, 111111111, 123456789, 1000000000, 1111111111, 1234567890 ].forEach (n=>{ console.log (n, kansuji(n)); })