Swift - конвертировать текст HTML в строку атрибута - PullRequest
0 голосов
/ 24 мая 2018

В одном из моих модулей я хочу показать многоязычные тексты HTML (английский и тамильский) в виде NSAttributedString с использованием UILabel.Если текст будет чисто английский, я могу показать его как мое желание Используя этот способ .Но мой контент содержит как английские, так и тамильские символы.Как я мог справиться с этим сценарием.Пожалуйста, поделитесь вашими предложениями, если кто-нибудь знает об этом.

HTML-контент

<medium><b><font color='#2f3744'>IPL Tamil Web Series Episode #3 | யாருடா Swetha ? | Tamil Comedy Web Series | Being Thamizhan</font></b></medium> has been succesfully scheduled on <medium><b><font color='#2f3744'>2018-05-23 08:51 PM</font></b></medium>

Ожидание

IPL Тамильский веб-сериал Эпизод № 3 |யாருடா Света?|Tamil Comedy Web Series |Быть Тамижаном было успешно запланировано на 2018-05-23 20:45

Текущий выход

IPL ТамилВеб-серия Эпизод № 3 |& * $%! @ # $ @ ^ & $ & ^% $ Света?|Tamil Comedy Web Series |Быть Тамижаном было успешно запланировано на 2018-05-23 08:45 вечера

Примечание. Я попытался с помощью фрагмента кода ниже архивировать этот

extension String {
var htmlToAttributedString: NSAttributedString? {
    guard let data = data(using: .utf8) else { return NSAttributedString() }
    do {
        return try NSAttributedString(data: data, options:
            [NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.html], documentAttributes: nil)
    } catch {
        return NSAttributedString()
    }
}
var htmlToString: String {
    return htmlToAttributedString?.string ?? ""
}
}

1 Ответ

0 голосов
/ 24 мая 2018

Я попробовал это решение с вашим html и работал нормально:

let htmlText = "<medium><b><font color='#2f3744'>IPL Tamil Web Series Episode #3 | யாருடா Swetha ? | Tamil Comedy Web Series | Being Thamizhan</font></b></medium> has been succesfully scheduled on <medium><b><font color='#2f3744'>2018-05-23 08:51 PM</font></b></medium>"
let encodedData = htmlText.data(using: String.Encoding.utf8)!
var attributedString: NSAttributedString

do {
    attributedString = try NSAttributedString(data: encodedData, options: [NSAttributedString.DocumentReadingOptionKey.documentType:NSAttributedString.DocumentType.html,NSAttributedString.DocumentReadingOptionKey.characterEncoding:NSNumber(value: String.Encoding.utf8.rawValue)], documentAttributes: nil)
} catch let error as NSError {
    print(error.localizedDescription)
} catch {
    print("error")
}

attributedString вывод:

IPL Tamil Web Series Эпизод № 3 |யாருடா Света?|Tamil Comedy Web Series |Быть Тамижаном было успешно запланировано на 2018-05-23 20:45

...