objective-cでテキスト内のURLと電話番号を簡単に検索してみました。
使ったのはiOS4以上で使える「NSRegularExpression」のサブクラス「NSDataDetector」です。
「NSDataDetector」は住所、電話番号、URL等を複数組み合わせて、文字列から検索できます。
複雑な正規表現を書かなくても、サクッとリンクと電話番号を検出できるので便利です。
適当なお試しコードをviewDidLoadに書いてみました。
- (void)viewDidLoad { [super viewDidLoad]; //検索する元になる文字列 NSString *baseString; //テスト用のURLと電話番号を用意 baseString = @"テスト用のURLです。http://d.hatena.ne.jp/tanaponchikidun/20120528/1338219772 が前のエントリです テスト用の電話番号です。090-0000-0000"; //NSDataDetectorのクラスメソッドで検出したいチェックタイプを指定、|で複数指定可能 NSDataDetector *linkDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink| NSTextCheckingTypePhoneNumber error:nil]; //チェックでマッチした結果がまとめて返ってくる NSArray *matches = [linkDetector matchesInString:baseString options:0 range:NSMakeRange(0,[baseString length])]; //結果を1件ずつ比較する for (NSTextCheckingResult *match in matches) { //Linkにマッチしたら if ([match resultType] == NSTextCheckingTypeLink) { NSURL *url = [match URL]; NSLog(@"url:%@",[url description]); } else if ([match resultType] == NSTextCheckingTypePhoneNumber) { NSString *phoneNumber = [match phoneNumber]; NSLog(@"tel:%@",phoneNumber); } } /** * 実行結果 URLと電話番号が検出できた * 2012-06-07 23:42:18.897 RegexTest[1324:f803] * url:http://d.hatena.ne.jp/tanaponchikidun/20120528/1338219772 * * 2012-06-07 23:42:18.898 RegexTest[1324:f803] * tel:090-0000-0000 */ }
一応これでURLと電話番号が検出できるようです。
どんどんobjectivecは便利になっていきますね。
[参考URL]