显示CharacterSet中包含的字符

Github Gist:

https://gist.github.com/zhaorui/fd2fbb988b82981bdf7c8e6e550b6c08

StackOverflow 讨论:

http://stackoverflow.com/questions/34772439/see-characters-in-an-nscharacterset-swift

Unicode基本知识

http://www.ruanyifeng.com/blog/2014/12/unicode.html

代码原理

Unicode编码包含0..16共17个平面,遍历这17个平面,如果CharacterSet中有字符属于特定的平面的话,则遍历该平面,找出CharacterSet中在该平面的所有字符,添加到数组中作为返回。

Code (Swift3实现)

extension CharacterSet {
    var characters:[UnicodeScalar] {
        var chars = [UnicodeScalar]()
        for plane:UInt8 in 0...16 {
            if self.hasMember(inPlane: plane) {
                let p0 = UInt32(plane) << 16
                let p1 = (UInt32(plane) + 1) << 16
                for c:UInt32 in p0..<p1 {
                    if let us = UnicodeScalar(c) {
                        if self.contains(us) {
                            chars.append(us)
                        }
                    }
                    
                }
            }
        }
        return chars
    }
}

使用范例

print(CharacterSet.urlQueryAllowed.characters)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 狄更斯说,这是最好的时代,这是最坏的时代;这是智慧的年代,这是愚蠢的年代;这是信仰的时期,这是怀疑的时期;这是光明...
    胡月一阅读 1,261评论 0 1
  • 车如马,恍如长安古道的惜迟。 终于知道最后还是要一个人走。 遇人不淑,原本就是眼光有问题罢了,言语行动如此鲜明,只...
    铭玥咏全阅读 3,315评论 1 3
  • 2016总结——时间都去哪了? 今天一起来打开得到的超级个体中的文章更新阅读。古典老师写了一封信,布置着今天的任务...
    王秀燕阅读 1,202评论 0 0