Swift-编码URL
如果我编码这样的字符串:
var escapedString = originalString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
它不能逃脱斜线/
。
我搜索并找到了此Objective C代码:
NSString *encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes( NULL,
(CFStringRef)unencodedString,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8 );
有没有更简单的方法来编码URL,否则,如何在Swift中编写此代码?
回答:
迅捷3
在Swift 3中有 addingPercentEncoding
let originalString = "test/test"let escapedString = originalString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
print(escapedString!)
输出:
测试%2Ftest
斯威夫特1
在iOS 7及更高版本中, stringByAddingPercentEncodingWithAllowedCharacters
var originalString = "test/test"var escapedString = originalString.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())
println("escapedString: \(escapedString)")
输出:
测试%2Ftest
以下是有用的(倒置)字符集:
URLFragmentAllowedCharacterSet "#%<>[\]^`{|}URLHostAllowedCharacterSet "#%/<>?@\^`{|}
URLPasswordAllowedCharacterSet "#%/:<>?@[\]^`{|}
URLPathAllowedCharacterSet "#%;<>?[\]^`{|}
URLQueryAllowedCharacterSet "#%<>[\]^`{|}
URLUserAllowedCharacterSet "#%/:<>?@[\]^`
如果要转义其他字符集,请创建一个字符集:
添加了“ =”字符的示例:
var originalString = "test/test=42"var customAllowedSet = NSCharacterSet(charactersInString:"=\"#%/<>?@\\^`{|}").invertedSet
var escapedString = originalString.stringByAddingPercentEncodingWithAllowedCharacters(customAllowedSet)
println("escapedString: \(escapedString)")
输出:
测试%2Ftest%3D42
验证不在集合中的ASCII字符的示例:
func printCharactersInSet(set: NSCharacterSet) { var characters = ""
let iSet = set.invertedSet
for i: UInt32 in 32..<127 {
let c = Character(UnicodeScalar(i))
if iSet.longCharacterIsMember(i) {
characters = characters + String(c)
}
}
print("characters not in set: \'\(characters)\'")
}
以上是 Swift-编码URL 的全部内容, 来源链接: utcz.com/qa/402131.html