Удалить тег HTML из строки


9
var content = "<p>&nbsp;&nbsp;test result</p><br/>"; // My String

let a = content.replacingOccurrences(of: "<[^>]+>", with: "", options: String.CompareOptions.regularExpression, range: nil)

a будет: &nbsp;&nbsp;test result

let b = a.replacingOccurrences(of: "&[^;]+;", with: "", options: String.CompareOptions.regularExpression, range: nil)

b теперь будет: test result

Это также позаботится &lt;и так далее. Магии нет. Узнайте, что вам нужно, а затем напишите правильный RegEx.


2

Попробуйте создать атрибутированную строку:

 let data = content.data(using: .utf8)
 let options = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType] as [String : Any]
 let attrStr = try NSAttributedString(data:data!, options:options ,documentAttributes:nil)
 content = attrStr.string

2

Использовать следующее расширение, протестированное на Playground в Swift 3.0

extension String {
    var withoutHtmlTags: String {
      return self.replacingOccurrences(of: "<[^>]+>", with: "", options: .regularExpression, range: nil)
    }
}

Применение

let result = "<strong>HTML</strong> Tags <em>Contain</em> <img /> <a href="">String</a>".withoutHtmlTags

2

Swift 4 : удаляет все теги HTML и декодирует объекты

Обеспечивает более стабильный результат

extension String {
    public var withoutHtml: String {
        guard let data = self.data(using: .utf8) else {
            return self
        }

        let options: [NSAttributedString.DocumentReadingOptionKey: Any] = [
            .documentType: NSAttributedString.DocumentType.html,
            .characterEncoding: String.Encoding.utf8.rawValue
        ]

        guard let attributedString = try? NSAttributedString(data: data, options: options, documentAttributes: nil) else {
            return self
        }

        return attributedString.string
    }
}

0

добавить расширение

extension String {

   func removeHTMLTag() -> String {

       return self.replacingOccurrences(of: "<[^>]+>", with: "", options: String.CompareOptions.regularExpression, range: nil)

    }

}

и использовать это

let htmlString : String = "<div> <p>I cannot understand </p> </div>"

htmlString.removeHTMLTag() // I cannot understand 
ИОС, быстро, swift3,

ios,swift,swift3,

1

Ответов: 5


9
var content = "<p>&nbsp;&nbsp;test result</p><br/>"; // My String

let a = content.replacingOccurrences(of: "<[^>]+>", with: "", options: String.CompareOptions.regularExpression, range: nil)

a будет: &nbsp;&nbsp;test result

let b = a.replacingOccurrences(of: "&[^;]+;", with: "", options: String.CompareOptions.regularExpression, range: nil)

b теперь будет: test result

Это также позаботится &lt;и так далее. Магии нет. Узнайте, что вам нужно, а затем напишите правильный RegEx.


2

Попробуйте создать атрибутированную строку:

 let data = content.data(using: .utf8)
 let options = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType] as [String : Any]
 let attrStr = try NSAttributedString(data:data!, options:options ,documentAttributes:nil)
 content = attrStr.string

2

Использовать следующее расширение, протестированное на Playground в Swift 3.0

extension String {
    var withoutHtmlTags: String {
      return self.replacingOccurrences(of: "<[^>]+>", with: "", options: .regularExpression, range: nil)
    }
}

Применение

let result = "<strong>HTML</strong> Tags <em>Contain</em> <img /> <a href="">String</a>".withoutHtmlTags

2

Swift 4 : удаляет все теги HTML и декодирует объекты

Обеспечивает более стабильный результат

extension String {
    public var withoutHtml: String {
        guard let data = self.data(using: .utf8) else {
            return self
        }

        let options: [NSAttributedString.DocumentReadingOptionKey: Any] = [
            .documentType: NSAttributedString.DocumentType.html,
            .characterEncoding: String.Encoding.utf8.rawValue
        ]

        guard let attributedString = try? NSAttributedString(data: data, options: options, documentAttributes: nil) else {
            return self
        }

        return attributedString.string
    }
}

0

добавить расширение

extension String {

   func removeHTMLTag() -> String {

       return self.replacingOccurrences(of: "<[^>]+>", with: "", options: String.CompareOptions.regularExpression, range: nil)

    }

}

и использовать это

let htmlString : String = "<div> <p>I cannot understand </p> </div>"

htmlString.removeHTMLTag() // I cannot understand 
ИОС, быстро, swift3,
Похожие вопросы