8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

全角数字・漢数字を一括して半角数字に変える

Posted at

引き続き、スプレッドシートでフォーマットの統一されていない住所一覧を渡されてキレてる私の覚書です。

前回は、住所に含まれる色んな横棒をハイフンに変えました。→こちら
ただ、この横棒処理は、番地を表す数字があらかじめ半角になっていることが前提となっています。

というわけで、別途こんな感じの関数が必要かと思います。

code.js
function num2num(str){ // 全角数字を半角数字に
  var reg;
  var twoBtNum = ['','','','','',
               '','','','',''];
  var num = ['1','2','3','4','5',
               '6','7','8','9','0'];
  for(var i=0;i<num.length;i++){
    reg = new RegExp(twoBtNum[i],'g'); // ex) reg = /3/g
    str = str.replace(reg,num[i]);
  }
  return str;
}
function kanji2num(str){ // 漢数字を半角数字に
  var reg;
  var kanjiNum = ['','','','','',
               '','','','',''];
  var num = ['1','2','3','4','5',
               '6','7','8','9','0'];
  for(var i=0;i<num.length;i++){
    reg = new RegExp(kanjiNum[i],'g'); // ex) reg = /三/g
    str = str.replace(reg,num[i]);
  }
  return str;
}

// 使用例
var add = '宮城県仙台市横浜区二丁目3-4';
var add2 = num2num(add); // add2 = '宮城県仙台市横浜区二丁目3ー4'
var add3 = kanji2num(add2); // add3 = '宮城県仙台市横浜区2丁目3ー4';

住所一覧に限らず色んな場面でけっこう使っております。
単純に、replace(/数字/g,"半角数字")を10通りやってるだけですが。
gオプションは、あてはまるもの全部ということになり、「三丁目三ー三」→「3丁目3ー3」と全部変わります。正規表現を使わない場合や、オプション無しの場合は、「3丁目三ー三」になる気がします。

住所に関してひとつ気を付けなければならないことがあって、この関数をやみくもに使うと、八王子→8王子 とか 三鷹→3鷹 という具合になります。
なので、こちらは単体で使うよりは、他の色々な処理と組み合わせて使っていくことが多くなると思います。

他の色々な処理について、またあとで書きます。

【その他の、住所の表記ゆれ対策シリーズ】
色んな横棒をハイフンにする

8
1
0

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
8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?