NSRegularExpression 检查 HTML 字符串的内容
NSRegularExpression Check Content of HTML String
我从服务器得到 html 字符串。如果它是空的,我们什么都不做。否则,我们将它们显示在 UIWebView 上。我可以在一个简单的 if 语句中使用 .isEmpty
轻松检查。
Services.getBusinessProfile(countryCode: countryCode, companyId: companyData.cId) { (req, html) in
if !html.isEmpty {
// rest of the code
问题是,有时我得到空标签:
<span style=\"font-family:HelveticaNeue; font-size: 16\"></span>
如何查看这个标签的内容?我想我必须为此使用 NSRegularExpression
,因为这个线程:NSRegularExpression to extract text between two XML tags。但是不知道怎么用。
如果您只需要检索 html 文本中第一个 span 标记之间的子字符串,您可以使用字符串 upperBound 和 lowerBound 的范围来获取子字符串,如下所示:
let htmlString = "<span style=\"font-family:HelveticaNeue; font-size: 16\">Indonesia</span>"
if let lower = htmlString.range(of: "<span style=\"font-family:HelveticaNeue; font-size: 16\">")?.upperBound,
let upper = htmlString.range(of: "</span>", range: lower..<htmlString.endIndex)?.lowerBound {
let text = htmlString[lower..<upper] // "Indonesia"
}
在 Swift 中,您可以验证包含 HTML 文本的字符串在解析后是否会生成空字符串:
func isEmptyOrBlank(htmlStr: String) -> Bool {
let htmlData = htmlStr.data(using: String.Encoding.unicode)
do {
let attributedText = try NSAttributedString(
data: htmlData!,
options: [.documentType: NSAttributedString.DocumentType.html], documentAttributes: nil
)
// Remove any whitespace and new line characters
let result = attributedText.string.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
return result.isEmpty
} catch let e as NSError {
// Unable to parse, so assume it's empty
return true
}
}
我从服务器得到 html 字符串。如果它是空的,我们什么都不做。否则,我们将它们显示在 UIWebView 上。我可以在一个简单的 if 语句中使用 .isEmpty
轻松检查。
Services.getBusinessProfile(countryCode: countryCode, companyId: companyData.cId) { (req, html) in
if !html.isEmpty {
// rest of the code
问题是,有时我得到空标签:
<span style=\"font-family:HelveticaNeue; font-size: 16\"></span>
如何查看这个标签的内容?我想我必须为此使用 NSRegularExpression
,因为这个线程:NSRegularExpression to extract text between two XML tags。但是不知道怎么用。
如果您只需要检索 html 文本中第一个 span 标记之间的子字符串,您可以使用字符串 upperBound 和 lowerBound 的范围来获取子字符串,如下所示:
let htmlString = "<span style=\"font-family:HelveticaNeue; font-size: 16\">Indonesia</span>"
if let lower = htmlString.range(of: "<span style=\"font-family:HelveticaNeue; font-size: 16\">")?.upperBound,
let upper = htmlString.range(of: "</span>", range: lower..<htmlString.endIndex)?.lowerBound {
let text = htmlString[lower..<upper] // "Indonesia"
}
在 Swift 中,您可以验证包含 HTML 文本的字符串在解析后是否会生成空字符串:
func isEmptyOrBlank(htmlStr: String) -> Bool {
let htmlData = htmlStr.data(using: String.Encoding.unicode)
do {
let attributedText = try NSAttributedString(
data: htmlData!,
options: [.documentType: NSAttributedString.DocumentType.html], documentAttributes: nil
)
// Remove any whitespace and new line characters
let result = attributedText.string.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
return result.isEmpty
} catch let e as NSError {
// Unable to parse, so assume it's empty
return true
}
}