美文网首页i猿联盟
NSCharacterSet译

NSCharacterSet译

作者: 萧旭 | 来源:发表于2019-06-19 11:21 被阅读0次

    链接

    NSCharacterSet

    NSCharacterSet对象代表一组固定的Unicode字符值,CharacterSet桥接于它。当你需要引用语义或者其它特定Foundation行为时可以使用NSCharacterSet

    概况

    NSCharacterSet对象代表一组兼容Unicode的字符。NSStringNSScanner对象使用它给搜索操作分组字符,以便于可以发现搜索中的特定字符集合。有两个公共类簇(cluster),NSCharacterSetNSMutableCharacterSet,分别给静态动态字符集声名正式接口。

    你使用这些类创建的对象被称为字符集对象,当不会卖到混乱时,也仅仅做为字符集。因为类簇的本质,字符集对象不能是实际的NSCharacterSetNSMutableCharacterSet类的实例,而是它们私有子类的实例。虽然字符集对象类是私有的,但它们的接口是公有的,是在其抽象类NSCharacterSetNSMutableCharacterSet中声名的。字符集类遵守了NSCopyingNSMutableCopying协议,使得它们可以很方便的转换成其它字符集类型。

    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)
    修改接收者内容,全集合为两个集合的并集

    相关文章

      网友评论

        本文标题:NSCharacterSet译

        本文链接:https://www.haomeiwen.com/subject/vyzcqctx.html