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で分ける
  • (void)phoneCall { AppDelegate delegate = (AppDelegate )[[UIApplication sharedApplication] delegate]; NSString phone = delegate.number; NSString phrase = @"-"; NSString separatedPhone; if(phone.length == 11){ //for cell phone NSString phone1 = [phone substringToIndex:3]; NSString phone2 = [phone substringWithRange:NSMakeRange(3, 4)]; NSString phone3 = [phone substringFromIndex:7]; separatedPhone = [[[[phone1 stringByAppendingString:phrase]stringByAppendingString:phone2]stringByAppendingString:phrase]stringByAppendingString:phone3]; }else{ //other phone NSString phone1 = [phone substringToIndex:3]; NSString phone2 = [phone substringWithRange:NSMakeRange(3, 3)]; NSString phone3 = [phone substringFromIndex:6]; separatedPhone = [[[[phone1 stringByAppendingString:phrase]stringByAppendingString:phone2]stringByAppendingString:phrase]stringByAppendingString:phone3]; } NSURL url = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",separatedPhone]]; [[UIApplication sharedApplication] openURL:url]; }

解説

今回は、文字列の操作ということで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アプリ開発の虎の巻