Android(java)で電話番号にいい感じに'-'(ハイフン)を入れる方法

電話番号って

[市外局番] - [市内局番] - [顧客番号]

みたいにハイフン2つで番号を区切る構造になっていますが

0312345678

みたいな、ハイフンが入っていない番号にハイフンを入れようと思うと、これが案外難しいです。

市外局番は、2桁の時もあれば、3桁、4桁の時もあるし、携帯は3桁だし、ちょっと自分でなんとかするのは手に余ります。

ウィキペディアの市外局番の項

こんな時は長いものにまかれましょう、という事で信頼できそうなとこが提供しているライブラリを活用です。
本家googleがライブラリを出してました。

libphonenumber

トップページ

ダウンロード

基本的には一番新しいものをダウンロードして、Android projectのlibsに放りこめば準備完了です。

※apkを作る時にエクスポートするライブラリにチェックを付けるのをお忘れなく。

使い方は極めて簡単。

[code lang=“java” light=“true”] /** * 数字が羅列された電話番号をハイフン付きの電話番号に変換する * @param incomingNumber * @return ハイフン付き電話番号 */ private String getFormattedPhoneNumber(String incomingNumber) { PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); try { PhoneNumber pn = phoneUtil.parse(incomingNumber, “JP”); incomingNumber = phoneUtil.format(pn, PhoneNumberFormat.NATIONAL); } catch (NumberParseException e) { Log.e(“app tag”,“電話番号をフォーマットできませんでした”, e); } return incomingNumber; }[/code]

 

Android以外では試していませんが、素のjavaでも使える…かも?