「半角数字を漢数字に変換」の版間の差分
ナビゲーションに移動
検索に移動
imported>Webmaster |
imported>Webmaster |
||
(同じ利用者による、間の3版が非表示) | |||
1行目: | 1行目: | ||
windows7の標準入力から半角数字(アラビア数字)を入力すると漢数字に変換するプログラム<br /> | windows7の標準入力から半角数字(アラビア数字)を入力すると漢数字に変換するプログラム<br /> | ||
− | <br /> | + | 【修正ポイント】<br /> |
+ | *\1 better written as $1のエラーのため一部修正 | ||
+ | *Windows標準入出力に変更 | ||
+ | |||
+ | 参考:[http://lamium.blogspot.jp/2014/06/blog-post.html Sus scrofa liaodongensis] | ||
+ | |||
+ | 入力例:東京都千代田区九段南2丁目 付近 (1) | ||
+ | 出力例:東京都千代田区九段南二丁目 付近 (一) | ||
− | |||
<syntaxhighlight lang="perl"> | <syntaxhighlight lang="perl"> | ||
#!/usr/bin/perl | #!/usr/bin/perl | ||
− | |||
#ソースファイルは UTF8形式で保存 | #ソースファイルは UTF8形式で保存 | ||
use strict; | use strict; |
2015年12月31日 (木) 10:44時点における最新版
windows7の標準入力から半角数字(アラビア数字)を入力すると漢数字に変換するプログラム
【修正ポイント】
- \1 better written as $1のエラーのため一部修正
- Windows標準入出力に変更
入力例:東京都千代田区九段南2丁目 付近 (1) 出力例:東京都千代田区九段南二丁目 付近 (一)
#!/usr/bin/perl
#ソースファイルは UTF8形式で保存
use strict;
use warnings;
#内部処理はUTF-8で行うための宣言
use utf8;
use Encode;
# windows標準はencoding(cp932)
binmode STDOUT, ':encoding(cp932)'; #標準出力
binmode STDERR, ':encoding(cp932)'; #標準エラー出力
binmode STDIN, ':encoding(cp932)'; #標準入出力
while (<>) {
# 数字は半角にそろえておく
y/1234567890/1234567890/;
# 単独の0は「ゼロ」に書き換える
s/(?<!\d)0(?!\d)/ゼロ/g;
# 桁区切りのコンマを取っておく
s/(?<=\d),(?=(\d\d\d)+(?!\d))//g;
# 4桁ごとに区切って万億兆を挿入
s/(?<=\d)(?=\d\d\d\d(?!\d))/万/g;
s/(?<=\d)(?=\d\d\d\d(?=万))/億/g;
s/(?<=\d)(?=\d\d\d\d(?=億))/兆/g;
# 下から1桁ずつ十百千を挿入
s/(?<=\d)(?=\d(?!\d))/十/g;
s/(?<=\d)(?=\d(?!\d))/百/g;
s/(?<=\d)(?=\d(?!\d))/千/g;
# 0になってる桁を削除
s/0[十百千]//g;
s/億0万/億/g;
s/兆0億/兆/g;
s/0//g;
# 十百には1をつけない
s/1([十百])/$1/g;
# 各桁を漢数字に書き換え
y/123456789/一二三四五六七八九/;
print $_;
}