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で分ける
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | </p> <ul> <li>(void)phoneCall { AppDelegate <em>delegate = (AppDelegate </em>)[[UIApplication sharedApplication] delegate]; NSString <em>phone = delegate.number; NSString </em>phrase = @"-"; NSString <em>separatedPhone; if(phone.length == 11){ //for cell phone NSString </em>phone1 = [phone substringToIndex:3]; NSString <em>phone2 = [phone substringWithRange:NSMakeRange(3, 4)]; NSString </em>phone3 = [phone substringFromIndex:7]; separatedPhone = [[[[phone1 stringByAppendingString:phrase]stringByAppendingString:phone2]stringByAppendingString:phrase]stringByAppendingString:phone3]; }else{ //other phone NSString <em>phone1 = [phone substringToIndex:3]; NSString </em>phone2 = [phone substringWithRange:NSMakeRange(3, 3)]; NSString <em>phone3 = [phone substringFromIndex:6]; separatedPhone = [[[[phone1 stringByAppendingString:phrase]stringByAppendingString:phone2]stringByAppendingString:phrase]stringByAppendingString:phone3]; } NSURL </em>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には色んな使い方があります。