Xcodeで電話番号を090XXXXYYYYから090-XXXX-YYYYに変換する方法

phone number

photo credit: Kat Northern Lights Man via photopin cc

こんばんは、ボーノです。

Xcodeで電話アプリを作っていて、電話番号を090XXXXYYYYから090-XXXX-YYYYに変換する必要がありました。

ググってもあまり良いページがなかったので、残しておきます。

やりたかったこと

アプリ上でアドレス帳から電話場号を引用し、電話をかけたいです。

ただし、一つだけポイントがある。 アドレス帳に入っているデータは090XXXXYYYYという形式です。

一方、Xcodeで電話をかけるためには090-XXXX-YYYYというように、ハイフンを入れなければ電話番号として認識してくれないです。

そのため、電話番号の間にハイフンを入れるための変換が必要です。

090XXXXYYYYから090-XXXX-YYYYに変換するためのコード

前提

  • あるタイミング(例えばボタンが押された時)でphoneCallメソッドを呼び出す
  • delegateには電話番号numberが入っている
  • 携帯電話と一般電話で桁数が異なるので、ifで分ける

解説

今回は、文字列の操作ということでNSStringのメソッドが多用してあります。

substringToIndex:N

これは、文字列を頭からN+1番目の文字まで切り取るというメソッド。

今回は、phoneという変数の頭から3文字目、つまりは090の部分を抜き出しています。

substringWithRange:NSMakeRange(N,M)

これは、ある変数のN+1番目から、M文字切り取るというメソッド。

今回の場合、4番目から4文字を切り取っており、つまりはXXXXの部分を取得していることになります。

substringFromIndex:N

これはsubstringToIndexと似ているが、少し異なります。

これは、N+1番目の文字から最後までを取得するメソッドです。

今回の場合は、YYYYの部分を取得しています。

後は

上記のメソッドより抜き出した文字列を、ハイフンを間に挟んで連結させるだけです。

なお、ここでは携帯電話だけでなく、一桁少ない固定電話に対してのコードも記載してあります。

ご参考までに。

参考サイト

いつものサイト、iPhoneアプリ開発の虎の巻のNSStringのページです。

まだまだNSStringには色んな使い方があります。

NSString - iPhoneアプリ開発の虎の巻