2017-01-17 2 views
0

Я хочу, чтобы закодировать символ + в моей строке адреса, я пытался сделать это таким образом:Как закодировать символ '+' в строке url?

let urlString = "www.google.com?type=c++" 

let result = string.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) 

, но это не будет работать для +.

любая идея? Благодарю.

Update:

Более того, этот type= параметр в URL является динамическим, я бы не сделать некоторые неявной замену на характер +. Этот параметр type= представляет значение UITextField, поэтому можно набирать что угодно.

Мне также интересно, почему addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) не будет работать в этом конкретном случае?

+0

Вы можете использовать ** urlString.replaceOccourences (из: "+", с: "") **? –

+0

Пожалуйста, проверьте [это] (http://stackoverflow.com/a/41568692/6541007). – OOPer

+0

Пожалуйста, прочтите обновление. Я не буду заменять символы в этом случае – Robert

ответ

4
let allowedCharacterSet = CharacterSet(charactersIn: "!*'();:@&=+$,/?%#[] ").inverted 

if let escapedString = "www.google.com?type=c++".addingPercentEncoding(withAllowedCharacters: allowedCharacterSet) { 
    print(escapedString) 
} 

Выход:

www.google.com% 3Ftype% 3Dc% 2B% 2B

+0

Да, ваш подход достаточно хорош (не идеален), но мне любопытно, почему 'addPercentEncoding (withAllowedCharacters: .urlQueryAllowed)' не будет работать ... – Robert

+0

Это то, на что я не могу ответить, они, вероятно, не добавили '+' к этому по какой-то веской причине. –

2

Заменить + с% 2B

let urlString = "www.google.com?type=c++" 
let newUrlString = aString.replacingOccurrences(of: "+", with: "%2B") 
+0

смотрите * обновление * описания. – Robert

+0

ваш подход - последнее, что я хотел бы сделать с ним. – Robert