LoginSignup
2
3

More than 3 years have passed since last update.

Swift:文章中のURL部分だけを抜き出して手に入れる方法

Last updated at Posted at 2017-04-08

背景

Twitter閲覧アプリの作成中にツイートからURLリンクを引っ張ってこようと思った際に作った関数をメモしておく。

ソースコード

import UIKit

//Stringの配列を返してくれる関数
func getUrlText(text: String) -> [String] {
    var results = [String]()
    let urlPattern: String = "http(s)?://([a-zA-Z0-9-_]+\\.)+[a-zA-Z0-9-_]+(/[a-zA-Z0-9-_./?%&=]*)?"

    var index: String.Index = text.startIndex
    while index < text.endIndex {
        let range_: Range<String.Index>? = text.range(of: urlPattern,
                                                   options: .regularExpression,
                                                   range: index ..< text.endIndex,
                                                   locale: .current)
        if range_ != nil {
            results.append(text[range_!])
            index = range_!.upperBound
        } else {
            break
        }
    }
    return results
}


//使用例
let str = "リンクはこれhttp://qiita.com/hoge1とhttp://qiita.com/hoge2です。"
let links: [String] = getUrlText(text: str)

print(links) // <-- ["http://qiita.com/hoge1", "http://qiita.com/hoge2"]

備考

NSRegularExpressionを使った方法が主流で前例があるようだったが、Stringのrangeメソッドという便利そうなものがせっかくできたのでそれを使ってみた。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3