为了账号安全,请及时绑定邮箱和手机立即绑定

快速编码URL

快速编码URL

繁花如伊 2019-06-18 15:06:46
快速编码URL如果我像这样编码一个字符串:var escapedString = originalString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)它逃不出斜杠/.我搜索并找到了这个目标C代码:NSString *encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(                         NULL,                         (CFStringRef)unencodedString,                         NULL,                         (CFStringRef)@"!*'();:@&=+$,/?%#[]",                         kCFStringEncodingUTF8 );是否有一种更简单的方式来编码一个URL,如果不是,我如何用SWIFT写这个呢?
查看完整描述

3 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

SWIFT 3

在SWIFT 3中addingPercentEncoding

let originalString = "test/test"let escapedString = originalString.addingPercentEncoding(withAllowedCharacters:
 .urlHostAllowed)print(escapedString!)

产出:

测试%2 Ftest

SWIFT 1

在IOS 7及以上版本中stringByAddingPercentEncodingWithAllowedCharacters

var originalString = "test/test"var escapedString = originalString.stringByAddingPercentEncodingWithAllowedCharacters
(.URLHostAllowedCharacterSet())println("escapedString: \(escapedString)")

产出:

测试%2 Ftest

以下是有用的(倒排)字符集:

URLFragmentAllowedCharacterSet  "#%<>[\]^`{|}
URLHostAllowedCharacterSet      "#%/<>?@\^`{|}URLPasswordAllowedCharacterSet  "#%/:<>?@[\]^`{|}
URLPathAllowedCharacterSet      "#%;<>?[\]^`{|}URLQueryAllowedCharacterSet     "#%<>[\]^`{|}
URLUserAllowedCharacterSet      "#%/:<>?@[\]^`

如果要转义一组不同的字符,请创建一组:
添加“=”字符的示例:

var originalString = "test/test=42"var customAllowedSet =  NSCharacterSet(charactersInString:"=\"#%/<>?@\\^`{|}").
invertedSetvar escapedString = originalString.stringByAddingPercentEncodingWithAllowedCharacters(customAllowedSet)println
("escapedString: \(escapedString)")

产出:

测试%2 Ftest%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)\'")}


查看完整回答
反对 回复 2019-06-18
  • 3 回答
  • 0 关注
  • 694 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信