NSCharacter​Set和NSMutableCharacterSet的初步研究

NSCharacterSet和NSMutableCharacterSet是用来表示一组Unicode字符,它经常与NSStringNSScanner组合起来使用,在不同的字符上做过滤、删除或者分割操作。

系统提供的常用的创建NSCharacterSet的类方法

    [NSCharacterSet alphanumericCharacterSet];          //所有数字和字母(大小写)
    [NSCharacterSet decimalDigitCharacterSet];          //0-9的数字
    [NSCharacterSet letterCharacterSet];                //所有字母
    [NSCharacterSet lowercaseLetterCharacterSet];       //小写字母
    [NSCharacterSet uppercaseLetterCharacterSet];       //大写字母
    [NSCharacterSet punctuationCharacterSet];           //标点符号
    [NSCharacterSet whitespaceAndNewlineCharacterSet];  //空格和换行符
    [NSCharacterSet whitespaceCharacterSet];            //空格

通过自定义创建NSCharacterSet的方法

    [NSCharacterSet characterSetWithCharactersInString:@"Hello"]; //String中的文字组成的set
    [NSCharacterSet characterSetWithRange:NSMakeRange(48, 10)]];//Range中对应的是字符编码的数字哦:此处为(0-9)
    [[NSCharacterSet decimalDigitCharacterSet] invertedSet];//数字之外的字符组成的set</span>

判断一个字符是否在set---例子中是判断0是否在数字set

    [[NSCharacterSet decimalDigitCharacterSet] characterIsMember:48];

判断一个set是否是另一个set"set"

    [[NSCharacterSet alphanumericCharacterSet] isSupersetOfSet:[NSCharacterSet decimalDigitCharacterSet]</span>
NSMutableCharacter的方法

    NSMutableCharacterSet *set1 = [NSMutableCharacterSet characterSetWithCharactersInString:@"Hell"];
    NSMutableCharacterSet *set2 = [NSMutableCharacterSet characterSetWithCharactersInString:@"ello"];
    //去掉某些字符
    [set2 removeCharactersInString:@"e"]; //--->l, o
    //加上某些字符
    [set2 addCharactersInString:@"e"];    //--->e, l, o
    //set相加
    [set2 formUnionWithCharacterSet:set1]; //--->H,e,l,o
    //本身加上另外一个的set相交
    [set2 formIntersectionWithCharacterSet:set1]; //--->H,e,l<pre name="code" class="objc">    //除以包含的以外的set
    [set2 invert];
 
例子 
    //例子1:去除两边的空格
    [@"  aaa   " stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    //例子2:通过数字把字符串变成数组
    [@"a1aa2aaa3aaaa4aaaaa" componentsSeparatedByCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]];

一个非常好的例子,来源于http://nshipster.com/nscharacterset/, 去掉多余的空格(包括两端的和中间的)

    NSString *exampleStr = @" My name    is Johnny!";
    exampleStr = [exampleStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    NSArray *exampleArr = [exampleStr componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self <> ''"];
    exampleArr = [exampleArr filteredArrayUsingPredicate:predicate];
    exampleStr = [exampleArr componentsJoinedByString:@" "];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值