我有这个网址:
"http://www.somedomain.com/folder/مرحبا المستخدم.jpg"
因此,我需要转义这些阿拉伯值,否则它将无法创建
URL
对象。我是这样做的
let originalString = "http://www.somedomain.com/folder/مرحبا المستخدم.jpg"
let escapedString = originalString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
这将是
escapedString
的输出:http://www.somedomain.com/folder/%D9%85%D8%B1%D8%AD%D8%A8%D8%A7%20%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85.jpg
到目前为止,一切都很好。但是当我强制尝试转义已经转义的URL时,结果很奇怪。
如何检查字符串是否已经编码?
最佳答案
您可以顺利进行:
extension String {
func isEscaped() -> Bool {
return self.removingPercentEncoding != self
}
}
然后
let yourEscapedString = "http://www.somedomain.com/folder/%D9%85%D8%B1%D8%AD%D8%A8%D8%A7%20%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85.jpg"
print(yourEscapedString.isEscaped()) // true
let yourNotEscapedString = "http://www.somedomain.com/folder/مرحبا المستخدم.jpg"
print(yourNotEscapedString.isEscaped()) // false