替换 URL 中出现的空格
Posted
技术标签:
【中文标题】替换 URL 中出现的空格【英文标题】:Replace occurrences of space in URL 【发布时间】:2011-03-27 06:34:18 【问题描述】:我在 iPhone 应用程序中有一个 URL 可以使用。但问题是它在 URL 中有一些空格。我想用 '%20' 替换空格。我知道有stringByReplacingOccurencesOfString
和stringByAddingPercentEscapesUsingEncoding
方法。我也用过它们。但他们不为我工作。空格被一些不寻常的值替换。
我将这些方法应用于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 中出现的空格的主要内容,如果未能解决你的问题,请参考以下文章