53

我在 iPhone 应用程序中有一个可以使用的 URL。但问题是它在 URL 中有一些空格。我想用 '%20' 替换空格。我知道有stringByReplacingOccurencesOfStringandstringByAddingPercentEscapesUsingEncoding方法。我也用过它们。但他们不为我工作。空格被一些不寻常的值替换。

我将这些方法应用于NSString.

4

11 回答 11

154

从 url 替换空格的正确格式是:

斯威夫特 4.2,斯威夫特 5

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

斯威夫特 4

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

目标 C

NSString *urlString;//your url string.

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

或者

urlString = [originalUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

iOS 9 及更高版本

urlString = [originalUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
于 2011-03-04T09:55:35.583 回答
9

斯威夫特 2.0

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

输出:

http://myurl.com/my%20photo.png
于 2015-10-20T05:20:30.907 回答
6

要替换SWIFT 3中的出现:

let updatedUrl = originalUrl.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)
于 2017-06-27T08:13:29.920 回答
4

斯威夫特 4

用 replaceOccurrences 方法替换空白空间的另一种方法:

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

这将用 '%20' 替换空白空间 (" ")

于 2017-02-08T20:15:42.013 回答
3

斯威夫特 5

var urlString = originalString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
于 2019-04-30T07:46:29.930 回答
1

Swift 5.3, clear space your string,

let str = "  www.test.com  "
let trimmed = str.trimmingCharacters(in: .whitespacesAndNewlines)
print(str) // "www.test.com" 
于 2020-06-19T20:51:25.027 回答
0

希望这会奏效

let url = "https:youtube.56432fgrtxcvfname=xyz&sname=tuv"
let urlNew:String = url.replacingOccurrences(of: " ", with: "%20")
Alamofire.request(urlNew, method: .get, headers: headers).responseJSON{
response in
print(response)    
}

它将从 url 中删除所有类型的空格。

于 2019-09-26T22:41:01.213 回答
0
var urlString :String = originalUrl.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)!
于 2018-06-12T03:16:32.357 回答
-1

斯威夫特 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)!
于 2017-11-05T01:38:48.633 回答
-1

斯威夫特 3.1

用 replaceOccurrences 替换空白空间的简单方法:

URL = URL.replacingOccurrences(of: " ", with: "", options: .literal, range: nil)
于 2017-08-17T10:04:35.693 回答
-1

Swift 4 解决方案。您只需传递一个字符串,它会用 %20 填充空格并将“http://”添加到字符串的开头。好甜!

URL(fileURLWithPath: String) 
于 2019-03-11T12:49:07.013 回答