Декодировать строку в Swift
Как я могу декодировать строку в swift? Строка теперь тестирует% 2Enl, но правильный формат - test.nl.
Теперь у меня есть это:
let encodedData = encodedString.dataUsingEncoding(NSUTF16StringEncoding)!
let attributedOptions = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType]
let attributedString = NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil, error: nil)!
return attributedString.string
Ответы
Ответ 1
Вы можете использовать stringByReplacingPercentEscapesUsingEncoding
var properString = s.stringByReplacingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
Обновление для быстрого 3:
Вместо этого используйте removingPercentEncoding
.
Ответ 2
В Swift 3:
let encodedString = "test%2Enl"
let decodedString = encodedString.removingPercentEncoding!
Swift 3 удалил много "лишних" формулировок во многих API Apple.
В этом случае stringByRemovingPercentEncoding был упрощен для удаления PercentEncoding.
Ответ 3
Или вы можете использовать stringByRemovingPercentEncoding?
Из документов:
Возвращает новую строку, полученную из приемника, заменяя все процентные кодированные последовательности соответствующими символами UTF-8.
let encodedString = "test%2Enl"
let decodedString = encodedString.stringByRemovingPercentEncoding!
println(decodedString)
Это напечатает test.nl
Ответ 4
Для этого вы можете использовать SwiftString (https://github.com/amayne/SwiftString).
"test%2Enl".decodeHTML() // "test.nl"
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я написал это расширение