LoginSignup
6
6

More than 5 years have passed since last update.

漢数字表記を無思慮に洋数字表記に書き換え

Last updated at Posted at 2014-07-16

漢数字と見れば、熟語だろうが人名だろうが無思慮に書き換えますから、あとで直してやってくださいね。「十」とか要チェックです。1桁のところはVimだと\D\@<=\d\(\D\@=\)で検索して、r1文字書き換え、n次を検索のくり返しで直すと楽かも。

なお、これは当初、すべての桁で書き換えるように書いたのですが、実際に使ってみると、ゼロの羅列で読みにくくなるので、万・億・兆は残すことにしました。そのため、せっかく挿入した単位語をあとで消したり、冗長なところがあります。

kan2yo.pl
while(<>) {
  # 単位語の前に数字がない場合「一」を補う
    s/(?<![一二三四五六七八九千百十])(?=[兆億万])/一/g;
    s/(?<![一二三四五六七八九])(?=[千百十])/一/g;
  # 欠けている桁をゼロとして復活させる
    s/(?<=兆)(?![一二三四五六七八九][十百千万]?億)/〇億/g;
    s/(?<=億)(?![一二三四五六七八九][十百千]?万)/〇万/g;
    s/(?<=[兆億万])(?![一二三四五六七八九]千)/〇千/g;
    s/(?<=千)(?![一二三四五六七八九]百)/〇百/g;
    s/(?<=百)(?![一二三四五六七八九]十)/〇十/g;
    s/(?<=十)(?![〇一二三四五六七八九])/〇/g;
  # 単位語のうち千百十を消す
    s/[千百十]//g;
  # 億万でゼロを整理
    s/〇〇〇〇[億万]//g;
    s/(?<=[兆億万])〇+//g;
  # 洋数字に変換
    y/〇一二三四五六七八九/0123456789/;
  # 3桁毎にコンマを挿入
    s/(?<=\d)(?=(\d\d\d)+(?!\d))/,/g;

    print $_;
}
6
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6