快速编码URL

快速编码URL

如果我像这样编码一个字符串:

var escapedString = originalString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

它逃不出斜杠/.

我搜索并找到了这个目标C代码:

NSString *encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(
                        NULL,
                        (CFStringRef)unencodedString,
                        NULL,
                        (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                        kCFStringEncodingUTF8 );

是否有一种更简单的方式来编码一个URL,如果不是,我如何用SWIFT写这个呢?



繁花如伊
浏览 698回答 3
3回答

皈依舞

SWIFT 3在SWIFT 3中addingPercentEncodinglet&nbsp;originalString&nbsp;=&nbsp;"test/test"let&nbsp;escapedString&nbsp;=&nbsp;originalString.addingPercentEncoding(withAllowedCharacters: &nbsp;.urlHostAllowed)print(escapedString!)产出:测试%2 FtestSWIFT 1在IOS 7及以上版本中stringByAddingPercentEncodingWithAllowedCharactersvar&nbsp;originalString&nbsp;=&nbsp;"test/test"var&nbsp;escapedString&nbsp;=&nbsp;originalString.stringByAddingPercentEncodingWithAllowedCharacters (.URLHostAllowedCharacterSet())println("escapedString:&nbsp;\(escapedString)")产出:测试%2 Ftest以下是有用的(倒排)字符集:URLFragmentAllowedCharacterSet&nbsp;&nbsp;"#%<>[\]^`{|} URLHostAllowedCharacterSet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"#%/<>?@\^`{|}URLPasswordAllowedCharacterSet&nbsp;&nbsp;"#%/:<>?@[\]^`{|} URLPathAllowedCharacterSet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"#%;<>?[\]^`{|}URLQueryAllowedCharacterSet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"#%<>[\]^`{|} URLUserAllowedCharacterSet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"#%/:<>?@[\]^`如果要转义一组不同的字符,请创建一组:添加“=”字符的示例:var&nbsp;originalString&nbsp;=&nbsp;"test/test=42"var&nbsp;customAllowedSet&nbsp;=&nbsp;&nbsp;NSCharacterSet(charactersInString:"=\"#%/<>?@\\^`{|}"). invertedSetvar&nbsp;escapedString&nbsp;=&nbsp;originalString.stringByAddingPercentEncodingWithAllowedCharacters(customAllowedSet)println ("escapedString:&nbsp;\(escapedString)")产出:测试%2 Ftest%3D42示例以验证非集合中的ascii字符:func&nbsp;printCharactersInSet(set:&nbsp;NSCharacterSet)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;characters&nbsp;=&nbsp;"" &nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;iSet&nbsp;=&nbsp;set.invertedSet&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i:&nbsp;UInt32&nbsp;in&nbsp;32..<127&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c&nbsp;=&nbsp;Character(UnicodeScalar(i)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;iSet.longCharacterIsMember(i)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;characters&nbsp;=&nbsp;characters&nbsp;+&nbsp;String(c) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;print("characters&nbsp;not&nbsp;in&nbsp;set:&nbsp;\'\(characters)\'")}
打开App,查看更多内容
随时随地看视频慕课网APP