#Swiftでリンク検出(標準APIで検出する場合とカスタムクラスの2パターン)
##実現方法
①正規表現書かなくていい場合
NSDataDetectorでリンク検出
let msg:NSString = "http://hoge.com"
let dataDetector = NSDataDetector(types:NSTextCheckingType.Link.rawValue, error: nil)
let resultArray:NSArray = dataDetector?.matchesInString(msg as String!, options: nil, range: NSMakeRange(0, msg.length)) as NSArray!
for result in resultArray {
if result.resultType == NSTextCheckingType.Link {
var url:NSURL! = result.URL!
linkExist = true
}
}
②自前で用意する場合
class Regex {
let internalExpression: NSRegularExpression
let pattern: String
init(_ pattern: String) {
self.pattern = pattern
var error: NSError?
self.internalExpression = NSRegularExpression(pattern: pattern, options: .CaseInsensitive, error: &error)!
}
func test(input: String) -> Bool {
let matches = self.internalExpression.matchesInString(input, options: nil, range:NSMakeRange(0, count(input)))
return matches.count > 0
}
}
if Regex("^https?://.*").test("http://hoge.com") {
// linkExist
}
##参考
NSDataDetector Class Reference
https://developer.apple.com/library/prerelease/ios/documentation/Foundation/Reference/NSDataDetector_Class/index.html
Regex in Swift
http://benscheirman.com/2014/06/regex-in-swift/