2016-10-18 3 views
3

Wie kann ich entschlüsseln meinen HTML-String aus:Decode HTML-String

<span>Bj&ouml;rn</span> 

zu

<span>Björn</span> 

in Swift 3?

Antwort

11

Müssen Sie wirklich die <span> Tags erhalten, während Sie das &ouml; Symbol ersetzen? Eine Technik, die von Leo Dabus in Convert Unicode symbol or its XML/HTML entities into its Unicode number in Swift vorgeschlagen wurde, wandelt die Symbole um, indem sie sie durch eine attributierte Zeichenfolge umläuft.

In Swift 4:

extension String { 
    /// Converts HTML string to a `NSAttributedString` 

    var htmlAttributedString: NSAttributedString? { 
     return try? NSAttributedString(data: Data(utf8), options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil) 
    } 
} 

Wenn Sie eine zugeschrieben Zeichenfolge wollen (zum Beispiel zur Verwendung in einem UILabel)

let string = "Bj&ouml;rn is <em>great</em> name" 
label.attributedText = string.htmlAttributedString 

Diese Bj&ouml;rn-Björn umwandelt und italicizes den <em>...</em> Teil auch .

Wenn Sie nur die HTML-Symbole umwandeln möchten und die HTML-Tags Streifen aus (wie Ihr <span>/</span>), nehmen Sie einfach den string:

let string = "Bj&ouml;rn is <em>great</em> name" 
if let result = string.htmlAttributedString?.string { 
    print(result) // "Björn is great name" 
} 

Für Stand der Swift-Versionen finden Sie previous revision von dieser Antwort.

+0

vielen Dank !!! es funktioniert – Kirill

+0

Die 'Daten (mit: .utf8' Stück in Ihrem Beispiel löst' Verwendung von unaufgelösten Bezeichner 'Daten''. Irgendeine Idee, wie Sie das beheben? – afkatja

+0

Hallo Rob und danke. Seltsam, ich benutze Swift 3 und immer noch Dieser Fehler – afkatja