替换 URL 中出现的空格

Posted

技术标签:

【中文标题】替换 URL 中出现的空格【英文标题】:Replace occurrences of space in URL 【发布时间】:2011-03-27 06:34:18 【问题描述】:

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

我将这些方法应用于NSString 的实例。

【问题讨论】:

在这里查看这篇文章:***.com/questions/695911/… 答案:NSString* escapedUrl = [originalUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 【参考方案1】:

从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]];

【讨论】:

@RaquibulIslam 我编辑了我的答案,请立即查看 我认为 stringByReplacingPercentEscapesUsingEncoding() 已被弃用。相反,我们可以使用 stringByRemovingPercentEncoding 它适用于本地路径吗?我的意思是文档目录 @guru 我认为您不需要为本地文档目录格式化路径【参考方案2】:

Swift 2.0

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

输出:

http://myurl.com/my%20photo.png

【讨论】:

【参考方案3】:

斯威夫特 4

另一种使用replaceOccurrences方法替换空格的方法:

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

这会将空格(“”)替换为“%20”

【讨论】:

错误:'String' 类型的值没有成员'trim' @Mehdico 这很奇怪,我总是修剪琴弦。在此示例中,您不必修剪字符串,因为您知道它是什么。但我会清理项目并尝试再次运行它。在字符串末尾添加 .trimmed 老兄,我认为您使用 String 类的扩展名,因为 .trimmed 在 swift 4 和 4.2 中找不到 您不必修剪字符串以替换空格 试试这个编码:- stringByAddingPercentEncodingWithAllowedCharacters: URLPathAllowedCharacterSet 和解码:- [NSURL fileURLWithPath:[self.yourString stringByRemovingPercentEncoding]]【参考方案4】:

替换 SWIFT 3 中的出现:

let updatedUrl = originalUrl.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)

【讨论】:

它适用于本地路径吗?我的意思是文档目录【参考方案5】:

SWIFT 3.1

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

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

【讨论】:

不起作用,因为 URL 没有成员“replacingOccurences”。 String 有这个方法,但 URL 没有。【参考方案6】:

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)!

【讨论】:

欢迎来到 SO。请提高你的回答质量【参考方案7】:
var urlString :String = originalUrl.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)!

【讨论】:

你需要对这段代码做更多的解释。还有其他人来这个问题寻求理解而不仅仅是代码。也帮助他人。【参考方案8】:

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

URL(fileURLWithPath: String) 

【讨论】:

【参考方案9】:

斯威夫特 5

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

【讨论】:

它适用于本地路径吗?我的意思是文档目录【参考方案10】:

希望这会奏效

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 中删除所有类型的空格。

【讨论】:

【参考方案11】:

Swift 5.3,清空你的字符串,

let str = "  www.test.com  "
let trimmed = str.trimmingCharacters(in: .whitespacesAndNewlines)
print(str) // "www.test.com" 

【讨论】:

以上是关于替换 URL 中出现的空格的主要内容,如果未能解决你的问题,请参考以下文章

用下划线替换 URL 中的空格

Jquery的序列化方法为啥要把空格替换成加号

用破折号替换 URL 中的空格

URL中的空格、加号究竟应该使用何种方式编码

如何在 C# 中用 %20 替换所有空格?

Java Regex替换:和/除了url中的域名到空格