Заменить вхождения пробела в URL - PullRequest
33 голосов
/ 09 августа 2010

У меня есть URL-адрес в приложении для работы с iPhone.Но проблема в том, что в URL есть пробелы.Я хочу заменить пробелы на «% 20».Я знаю, что есть методы stringByReplacingOccurencesOfString и stringByAddingPercentEscapesUsingEncoding.Я также использовал их.Но они не работают для меня.Пробелы заменены некоторыми необычными значениями.

Я применяю эти методы к экземпляру NSString.

Ответы [ 9 ]

94 голосов
/ 04 марта 2011

Правильный формат для замены пробела из URL:

Цель C

NSString *urlString;//your url string.

urlString = [originalUrl stringByReplacingOccurrencesOfString:@" " withString:@"%20"];

или

urlString = [originalUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

iOS 9 и более поздние версии

urlString = [originalUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

Swift:

var originalUrl = "https://google.com"
var urlString = originalString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)

ios 9 и более поздние версии

var urlString :String = originalUrl.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!

Swift 4

var urlString = originalString.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)

Swift 4.2

var urlString = originalString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
9 голосов
/ 20 октября 2015

Swift 2.0

let originalUrl = "http://myurl.com/my photo.png"
let urlNew:String = urlReq.stringByAddingPercentEncodingWithAllowedCharacters( NSCharacterSet.URLQueryAllowedCharacterSet())! 

Выход:

http://myurl.com/my%20photo.png
5 голосов
/ 27 июня 2017

Для замены вхождения в SWIFT 3 :

let updatedUrl = originalUrl.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)
4 голосов
/ 08 февраля 2017

Swift 4

Еще один способ заменить пустое пространство с помощью метода replaceOccurrence:

let yourString = "http://myurl.com/my photo.png"
let urlNew:String = yourString.replacingOccurrences(of: " ", with: "%20").trimmed 

, который заменит пустое пространство ("") на '%20'

0 голосов
/ 30 апреля 2019

Свифт 5

var urlString = originalString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
0 голосов
/ 11 марта 2019

Решение Swift 4.Вы просто пропускаете строку, и она заполняет пробелы% 20 и добавляет "http://" в начало строки. Довольно мило!

URL(fileURLWithPath: String) 
0 голосов
/ 12 июня 2018
var urlString :String = originalUrl.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)!
0 голосов
/ 05 ноября 2017

Swift 4, iOS-9

let **urlSearchVal**:String = "top 10 movies"     
let urlString = 

    "https://www.googleapis.com/youtube/v3/search?part=snippet&q=\(urlSearchVal)&key=......&type=video"   
//replace ...... above with your youtube key   
// to ignoring white space in search  
        let UrlString :String = urlString.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)!
0 голосов
/ 17 августа 2017

SWIFT 3.1

Простой способ замены пустого пространства с помощью replaceOccurrence:

URL = URL.replacingOccurrences(of: " ", with: "", options: .literal, range: nil)
...