首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建自定义NSCharacterSet?

如何创建自定义NSCharacterSet?
EN

Stack Overflow用户
提问于 2015-09-12 00:04:17
回答 2查看 14.3K关注 0票数 19

我使用CharacterSet.urlQueryAllowed将百分比编码添加到字符串中。

有些字符没有按照我期望的方式编码(即&?没有改变)。话虽如此,我的想法是构建一个自定义的CharacterSet,理想情况下是基于现有的。

这样做的最佳方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-12 00:20:46

创建新字符集的最典型方法是使用CharacterSet(charactersIn:),给出一个包含字符集所有字符的String

向现有集合中添加一些字符可以使用以下命令实现:

代码语言:javascript
复制
let characterSet = NSMutableCharacterSet() //create an empty mutable set
characterSet.formUnionWithCharacterSet(NSCharacterSet.URLQueryAllowedCharacterSet())
characterSet.addCharactersInString("?&")

或者在Swift 3+中,简单地:

代码语言:javascript
复制
var characterSet = CharacterSet.urlQueryAllowed
characterSet.insert(charactersIn: "?&")

对于URL编码,还要注意Objective-C and Swift URL encoding

票数 42
EN

Stack Overflow用户

发布于 2016-11-02 11:45:40

你可以试试我的方法:

代码语言:javascript
复制
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~

rfc3986:https://www.rfc-editor.org/rfc/rfc3986

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32527651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档