web-dev-qa-db-fra.com

Comment puis-je supprimer/décoder le pourcentage de codage d'URL?

Je veux prendre une url et la convertir en un format plus lisible. Par exemple, j'ai le lien suivant: 

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

J'enlève les parties inutiles et il me reste "S%C3%A1ndor_Font" en tant que NSString. Existe-t-il un moyen de convertir cela en "Sándor Font" (ce qu'il devrait être en réalité), sans avoir à saisir chaque combinaison de caractères spéciaux et à remplacer chaque partie de la chaîne? 

Pour montrer comment je veux utiliser cela, j’ai écrit le code exemple suivant:

   //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;

En fin de compte, je veux que l'étiquette dise "Sándor Font" pas "S%C3%A1ndor_Font". Merci!

16
user2844801

- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding; sur NSString est ce que vous voulez.

C'est à dire.

[substring stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
37
Josh The Geek

Pour iOS10/Swift 3:

substring.removingPercentEncoding

Pour iOS9/Swift 2.3:

substring.stringByRemovingPercentEncoding

32
Frankie

Swift 3

str.removingPercentEncoding
8
quemeful

Swift 4.2 (support Linux)

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