如何知道字符串是否已经使用特殊字符进行了特殊转义?

Hem*_*ang 3 string encoding decoding ios swift

我有这个网址:

"http://www.somedomain.com/folder/????? ????????.jpg"
Run Code Online (Sandbox Code Playgroud)

所以我需要转义这些阿拉伯值,否则它将无法创建URL对象。

我是这样做的,

let originalString = "http://www.somedomain.com/folder/????? ????????.jpg"
let escapedString = originalString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
Run Code Online (Sandbox Code Playgroud)

这将是以下输出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 时,结果很奇怪。

如何检查字符串是否已被编码?

And*_*ini 5

你可以顺利做到:

extension String {
    func isEscaped() -> Bool {
        return self.removingPercentEncoding != self
    }
}
Run Code Online (Sandbox Code Playgroud)

然后

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
Run Code Online (Sandbox Code Playgroud)