JavaScript
正規表現
gas
文字列操作

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

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

前回は、住所に含まれる色んな横棒をハイフンに変えました。→こちら

ただ、この横棒処理は、番地を表す数字があらかじめ半角になっていることが前提となっています。

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


code.js

function num2num(str){ // 全角数字を半角数字に

var reg;
var twoBtNum = ['1','2','3','4','5',
'6','7','8','9','0'];
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鷹 という具合になります。

なので、こちらは単体で使うよりは、他の色々な処理と組み合わせて使っていくことが多くなると思います。

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

【その他の、住所の表記ゆれ対策シリーズ】

色んな横棒をハイフンにする