geolonia / normalize-japanese-addresses

オープンソースの住所正規化ライブラリ。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

全角→半角処理について

YuukiToriyama opened this issue · comments

Rust移植をつくってみようなどと思いコードを拝読させて頂いております。
src/main.tsを読んでいたとき、次の部分についてふと疑問に思いました。

.replace(/([0-9A-Za-z]+)/g, (match) => {
// 全角のアラビア数字は問答無用で半角にする
return zen2han(match)
})

zen2han

export const zen2han = (str: string) => {
return str.replace(/[A-Za-z0-9]/g, (s) => {
return String.fromCharCode(s.charCodeAt(0) - 0xfee0)
})
}

と定義されているので、二重に正規表現の検索をかけるようになってやや冗長ではないかと思いました。
まあ、変えたところで速度が格段に上がる箇所ではありませんし、見た目も今のコードのほうが良いのでこだわる必要もありませんが、57行目から63行目は次のようにしても動くようです。

let addr = zen2han(address)
  .replace(/ /g, ' ')
  .replace(/ +/g, ' ')

@YuukiToriyama ありがとうございます!

@champierre こちら #110 と一緒に対処して次のリリースに含めていただけますと。

cc: @keichan34