it-roy-ru.com

Как удалить/декодировать кодирование процентов URL?

Я хочу взять url и преобразовать его в более читабельный формат. Например, у меня есть следующая ссылка: 

http://en.wikipedia.org/wiki/S%C3%A1ndor_Font

Я убираю ненужные части и остаюсь с "S%C3%A1ndor_Font" как NSString. Есть ли какой-либо способ преобразовать это в "Sándor Font" (каким оно на самом деле должно быть), не вводя каждую отдельную комбинацию специальных символов и не заменяя каждую часть строки? 

Чтобы продемонстрировать, как я хочу использовать это, я написал следующий пример кода:

   //request is a NSURLRequest with a url of http://en.wikipedia.org/wiki/S%C3%A1ndor_Font

    NSRange range = [[request.URL absoluteString] rangeOfString:@"/wiki/"];

    NSString *substring = [[[request.URL absoluteString] substringFromIndex:NSMaxRange(range)] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

    //ArticleTitleLabel is a UILabel

    self.ArticleTitleLabel.text = substring;

В конце я хочу, чтобы лейбл сказал "Sándor Font", а не "S%C3%A1ndor_Font". Спасибо!

16
user2844801

- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding; на NSString - это то, что вы хотите.

То есть.

[substring stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
37
Josh The Geek

Для iOS10/Swift 3:

substring.removingPercentEncoding

Для iOS9/Swift 2.3:

substring.stringByRemovingPercentEncoding

32
Frankie

Swift 3

str.removingPercentEncoding
8
quemeful

Swift 4.2 (поддержка Linux)

let percentString = "hello%20world"
let string = NSString(string: percentString).removingPercentEncoding!
print(string) // hello world
2
Sergey Di