Ios 将字符串转换为带有字符'\\';在…内

Ios 将字符串转换为带有字符'\\';在…内,ios,swift,nsurl,Ios,Swift,Nsurl,我使用Swift 2.0进行编码 我的URL字符串如下所示: let urlString = "http://example.com/api/getfile/?filepath=C:\\1.txt" 当我将其转换为NSURL时,它返回nil let OrginUrl = NSURL(string: urlString) 有人知道怎么做吗?有两个问题需要解决: 为了包含\字符,必须对其进行转义,因为它本身就是转义字符 URL中不允许使用“\”字符,因此需要对其进行URL编码 let urlSt

我使用Swift 2.0进行编码

我的URL字符串如下所示:

let urlString = "http://example.com/api/getfile/?filepath=C:\\1.txt"
当我将其转换为NSURL时,它返回nil

let OrginUrl = NSURL(string: urlString)

有人知道怎么做吗?

有两个问题需要解决:

为了包含
\
字符,必须对其进行转义,因为它本身就是转义字符

URL中不允许使用“\”字符,因此需要对其进行URL编码

let urlString = "http://example.com/api/getfile/?filepath=C:\\\\1.txt"  
print("urlString: \(urlString)")  

var escapedString = urlString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLHostAllowedCharacterSet())  
print("escapedString!: \(escapedString!)")  

let orginUrl = NSURL(string: escapedString!)  
print("orginUrl: \(orginUrl!)")  
URL字符串:

转义字符串!:
http%3A%2F%2Fexample.com%2Fapi%2Fgetfile%2F%3Ffilepath=C%3A%5C%5C1.txt

来源:
http%3A%2F%2Fexample.com%2Fapi%2Fgetfile%2F%3Ffilepath=C%3A%5C%5C1.txt


您应该使用unicode而不是反斜杠两次

stringByAddingPercentEscapesUsingEncoding
不推荐使用:改用
stringbyaddingpercentencoding with allowedcharacters(:)
,它总是使用推荐的UTF-8编码,它为特定的URL组件或子组件编码,因为每个URL组件或子组件对哪些字符有效有不同的规则

文件

下面是示例代码:

let myLink = "http://example.com/api/getfile/?filepath=C:\u{005C}\u{005C}1.txt"
var newLink = ""
if let queryIndex = myLink.characters.indexOf("?"){
    newLink += myLink.substringToIndex(queryIndex.successor())
    if let filePathIndex = myLink.characters.indexOf("=")?.successor() {
        newLink += myLink.substringWithRange(queryIndex.successor()...filePathIndex.predecessor())
        let filePath =  myLink.substringFromIndex(filePathIndex)
        if let pathEscaped = filePath.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLPathAllowedCharacterSet()) {
            newLink += pathEscaped
        }
    }
}
if let newURL = NSURL(string: newLink) {
    print(newURL, separator: "", terminator: "")
} else {
    print("invalid")
}
您将得到以下结果:

“”

试试这个:让urlString=“:\\\\1.txt”