ixa*_*any 18 urlencode nscharacterset swift
我正在使用CharacterSet.urlQueryAllowed百分比编码添加到字符串.
有些字符编码不希望我的方式(即&并?没有改变).话虽如此,我有了构建自定义的想法CharacterSet,理想情况是基于现有的自定义.
这样做的最佳方法是什么?
Sul*_*han 40
创建新字符集的最典型方法是使用
CharacterSet(charactersIn:),给出String该集合的所有字符.
使用以下命令可以为现有集添加一些字符:
let characterSet = NSMutableCharacterSet() //create an empty mutable set
characterSet.formUnionWithCharacterSet(NSCharacterSet.URLQueryAllowedCharacterSet())
characterSet.addCharactersInString("?&")
Run Code Online (Sandbox Code Playgroud)
或者在Swift 3中简单地说:
var characterSet = CharacterSet.urlQueryAllowed
characterSet.insert(charactersIn: "?&")
Run Code Online (Sandbox Code Playgroud)
对于URL编码,还要注意Objective-C和Swift URL编码
您可以尝试我的方法:
let password = "?+=!@#$%^&*()-_abcdABCD1234`~"
// Swift 2.3
extension NSCharacterSet {
static var rfc3986Unreserved: NSCharacterSet {
let mutable = NSMutableCharacterSet()
mutable.formUnionWithCharacterSet(.alphanumericCharacterSet())
mutable.addCharactersInString("-_.~")
return mutable
}
}
let encoding = password.stringByAddingPercentEncodingWithAllowedCharacters(.rfc3986Unreserved)
// Swift 3
extension CharacterSet {
static var rfc3986Unreserved: CharacterSet {
return CharacterSet(charactersIn: "-_.~").union(.alphanumerics)
}
}
let encoding = password.addingPercentEncoding(withAllowedCharacters: .rfc3986Unreserved)
Print?
original -> ?+=!@#$%^&*()-_abcdABCD1234`~
encoding -> %3F%2B%3D%21%40%23%24%25%5E%26%2A%28%29-_abcdABCD1234%60~
Run Code Online (Sandbox Code Playgroud)
rfc3986:https://tools.ietf.org/html/rfc3986

| 归档时间: |
|
| 查看次数: |
11186 次 |
| 最近记录: |