如何扫描字符串,识别并转换为NSURL

时间:2016-04-19 10:24:52

标签: ios swift nsurl

我想通过一个字符串来确定该字符串中是否有URL。如果有,我想格式化它,以便用户可以点击URL。

请注意,字符串不是静态的或总是相同的。字符串是属于评论的JSON数据,并在应用的Feed中发布。

我的第一个想法是使用regEx表达式并创建一个扫描字符串的函数,确定是否匹配http://https://等。然后将字符串的范围转换为NSURL

还有其他想法,建议,解决方案吗?

提前谢谢!

2 个答案:

答案 0 :(得分:1)

使用NSDataDetector。关于它的好文章:http://nshipster.com/nsdatadetector/

答案 1 :(得分:0)

NSDataDetector类是NSRegularExpression的专用子类,旨在匹配预定义数据模式的自然语言文本。

目前,NSDataDetector课程可以匹配日期,地址,链接,电话号码和公交信息。

NSError *error = nil;
   NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink|NSTextCheckingTypePhoneNumber
                                                              error:&error];

使用NSRegularExpression方法n​​umberOfMatchesInString确定字符串范围内的匹配数:options:range:。

NSUInteger numberOfMatches = [detector numberOfMatchesInString:string
                                                          options:0
                                                            range:NSMakeRange(0, [string length])];

点击此处查看详情:https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSDataDetector_Class/

OR

如果您有UITextView或UIWebView,只需设置dataDetectorTypes属性即可检测链接。

对于UITextView:

TextView.dataDetectorTypes = UIDataDetectorTypeLink;

对于UIWebView:

webView.dataDetectorTypes = UIDataDetectorTypeLink;

有关详情,请查看:https://developer.apple.com/library/ios/qa/qa1495/_index.html