2016-10-18 7 views

ответ

11

Нужно ли сохранять теги <span> при замене символа &ouml;? Один метод, предложенный Лео Дабусом в Convert Unicode symbol or its XML/HTML entities into its Unicode number in Swift, преобразует символы, которые включают в себя круговое отключение его через атрибутивную строку.

В 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) 
    } 
} 

Если вы хотите приписываемое строку (например, для использования в UILabel)

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

Это превращает Bj&ouml;rn в Björn и выделяет курсивом в <em>...</em> часть тоже ,

Если вы просто хотите конвертировать HTML-символы и вычистить HTML-теги (такие как ваш <span>/</span>), просто возьмите string:

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

Для предыдущих Swift версий см previous revision этого ответа.

+0

спасибо большое !!! он работает – Kirill

+0

«данные (с использованием: .utf8' в вашем примере бросает« использование неразрешенных идентификационных данных ». Любая идея, как это исправить? – afkatja

+0

Привет, Роб и спасибо. Странно, я использую Swift 3 и все еще получаю эта ошибка. – afkatja

Смежные вопросы