从 RSS 提要 swift 获取 img url
Getting img url from RSS feed swift
我希望能够从一段字符串中检索 img url。
这是我要检索的 img URL 的示例:
<p><img width="357" height="500" src="http://images.sgcafe.net/2015/05/OVA1-357x500.jpg" class="attachment- medium wp-post-image" alt="OVA1" />
我当前的实施在 textCheck
处崩溃,表示它 NIL
。我查看了Whosebug上的Objective C解决方案并在swift中实现了它,但它似乎不起作用。
var elementString = item.summary
var regex: NSRegularExpression = NSRegularExpression(pattern: "img src=\"([^\"]*)\"", options: .CaseInsensitive, error: nil)!
let range = NSMakeRange(0, count(elementString))
var textCheck = regex.firstMatchInString(elementString, options: nil, range: range)!
let text = (elementString as NSString).substringWithRange(textCheck.rangeAtIndex(1))
您应该尽可能多地使用不超过 src
属性的字符。您可以使用 .*?
:
var regex: NSRegularExpression = NSRegularExpression(pattern: "<img.*?src=\"([^\"]*)\"", options: .CaseInsensitive, error: nil)!
此外,您可以使用 Ross' iOS Swift blog
中的示例
import Foundation
extension String {
func firstMatchIn(string: NSString!, atRangeIndex: Int!) -> String {
var error : NSError?
let re = NSRegularExpression(pattern: self, options: .CaseInsensitive, error: &error)
let match = re.firstMatchInString(string, options: .WithoutAnchoringBounds, range: NSMakeRange(0, string.length))
return string.substringWithRange(match.rangeAtIndex(atRangeIndex))
}
}
并且在您的调用代码中:
var result = "<img.*?src=\"([^\"]*)\"".firstMatchIn(elementString, atRangeIndex: 1)
要确保 .
匹配换行符,请使用 options: NSRegularExpressionOptions.DotMatchesLineSeparators
。
我希望能够从一段字符串中检索 img url。
这是我要检索的 img URL 的示例:
<p><img width="357" height="500" src="http://images.sgcafe.net/2015/05/OVA1-357x500.jpg" class="attachment- medium wp-post-image" alt="OVA1" />
我当前的实施在 textCheck
处崩溃,表示它 NIL
。我查看了Whosebug上的Objective C解决方案并在swift中实现了它,但它似乎不起作用。
var elementString = item.summary
var regex: NSRegularExpression = NSRegularExpression(pattern: "img src=\"([^\"]*)\"", options: .CaseInsensitive, error: nil)!
let range = NSMakeRange(0, count(elementString))
var textCheck = regex.firstMatchInString(elementString, options: nil, range: range)!
let text = (elementString as NSString).substringWithRange(textCheck.rangeAtIndex(1))
您应该尽可能多地使用不超过 src
属性的字符。您可以使用 .*?
:
var regex: NSRegularExpression = NSRegularExpression(pattern: "<img.*?src=\"([^\"]*)\"", options: .CaseInsensitive, error: nil)!
此外,您可以使用 Ross' iOS Swift blog
中的示例import Foundation
extension String {
func firstMatchIn(string: NSString!, atRangeIndex: Int!) -> String {
var error : NSError?
let re = NSRegularExpression(pattern: self, options: .CaseInsensitive, error: &error)
let match = re.firstMatchInString(string, options: .WithoutAnchoringBounds, range: NSMakeRange(0, string.length))
return string.substringWithRange(match.rangeAtIndex(atRangeIndex))
}
}
并且在您的调用代码中:
var result = "<img.*?src=\"([^\"]*)\"".firstMatchIn(elementString, atRangeIndex: 1)
要确保 .
匹配换行符,请使用 options: NSRegularExpressionOptions.DotMatchesLineSeparators
。