NSCharacterSet译
NSCharacterSet
NSCharacterSet对象代表一组固定的Unicode字符值,CharacterSet桥接于它。当你需要引用语义或者其它特定Foundation行为时可以使用NSCharacterSet。
概况
NSCharacterSet对象代表一组兼容Unicode的字符。NSString和NSScanner对象使用它给搜索操作分组字符,以便于可以发现搜索中的特定字符集合。有两个公共类簇(cluster),NSCharacterSet和NSMutableCharacterSet,分别给静态动态字符集声名正式接口。
你使用这些类创建的对象被称为字符集对象,当不会卖到混乱时,也仅仅做为字符集。因为类簇的本质,字符集对象不能是实际的NSCharacterSet或NSMutableCharacterSet类的实例,而是它们私有子类的实例。虽然字符集对象类是私有的,但它们的接口是公有的,是在其抽象类NSCharacterSet和NSMutableCharacterSet中声名的。字符集类遵守了NSCopying和NSMutableCopying协议,使得它们可以很方便的转换成其它字符集类型。
NSCharacterSet类声名了特定接口,用来可以管理Unicode字符集(可参见NSString类簇Unicode信息说明)。最主要最原始的方法——characterIsMember(:),为其它实例提供了基础。它的子类为具有特定行为仅仅需要实现这个方法,外加mutableCopy(with:)。如果有更佳的性能,可以重写bitmapRepresentation方法,否则它会为每个可以的Unicode值调用characterIsMember(:)*方法。
NSCharacterSet可以说是免税桥接的Core Foundation中的CFCharacterSet。参见Toll-Free Bridging
API
得到标准字符集
alphanumerics 类方法 (字符)
一个包含Unicode全部类型 L星, M星 和 N星的字符集。
capitalizedLetters 类方法 (大写)
包含Unicode所有Lt的字符集
controlCharacters 类方法
包含Unicode所有Cc 和 Cf的字符集
decimalDigits
所有Decimal Numbers(小数数字)的字符集
decomposables (可分解的)
包含的这些字符都是由字符序列组成的
illegalCharacters (非法的)
包含了非字符或者还没定义到Unicode标准中的字符
letters (字母)
包含了所有的L星和M星
lowercaseLetters (小写字母)
包含了所有LI字符
newlines
包含了所有换行符(U+000A ~ U+000D, U+0085, U+2028, and U+2029)。
nonBaseCharacters
包含所有的M*类型字符
punctuationCharacters (标点)
包含所有P星类型字符
symbols (符号)
包含所有S星类型字符
uppercaseLetters (大写字母)
包含所有Lu、Lt类型字符
whitespacesAndNewlines (空白和换行)
包含所有Z星类型字符和U+000A ~ U+000D, U+0085
whitespaces
包含所有Zs和 CHARACTER TABULATION (U+0009)
得到URL编码字符集
urlFragmentAllowed
组成URL的各个片段
urlHostAllowed
组成host URL的片段
urlPasswordAllowed
URL密码的片段
urlPathAllowed
path URL的片段
urlQueryAllowed
query URL的片段
urlUserAllowed
userURL片段
创建自定义的字符集
init(coder: NSCoder)
init(charactersIn: String)
init(range: NSRange)
使用BitmapRepresentations创建和管理字符集
init(bitmapRepresentation: Data)
init?(contentsOfFile: String)
var bitmapRepresentation: Data
字符集的补集
var inverted: CharacterSet
测试集合成员
func characterIsMember(unichar) -> Bool
表示一个字符是否包含在字符集内
func hasMemberInPlane(UInt8) -> Bool
这里涉及到Basic Multilingual Plane ( Unicode平面映射)的东西,表示是否包含某plan的成员
func isSuperset(of: CharacterSet) -> Bool
表示是否为某集合的超集
func longCharacterIsMember(UTF32Char) -> Bool
表示是否包含一个长字符,此方法支持32位字符规范
NSMutableCharacterSet
在NSCharacterSet的基础上加了一些内容
添加和移除字符
func addCharacter(in: NSRange)
将range范围内的Unicode添加到接收者
func removeCharacters(in: NSRange)
将range范围内的Unicode移除出接收者
func addCharacters(in: String)
将字符串中的字符添加到接收者
func removeCharacters(in: String)
将字符串中的字符移除出接收者
合并字符集
func fromIntersection(with: CharacterSet)
修改接收者的内容,使集合为两个集合的交集
func formUnion(with: CharacterSet)
修改接收者内容,全集合为两个集合的并集