[iOS学习] NSCharacterSet的使用详解

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

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

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

2. 通过自定义创建NSCharacterSet的方法

[NSCharacterSet characterSetWithCharactersInString:@"Hello"]; //String中的文字组成的set  
[NSCharacterSet characterSetWithRange:NSMakeRange(48, 10)]]; // ascll码,此处为(0-9)  
[[NSCharacterSet decimalDigitCharacterSet] invertedSet]; // 数字之外的字符组成的set  

3. 判断一个字符是否在set中—例子中是判断0是否在数字set中

[[NSCharacterSet decimalDigitCharacterSet] characterIsMember:48];  

4. 判断一个set是否是另一个set的”超set”

[[NSCharacterSet alphanumericCharacterSet] isSupersetOfSet:[NSCharacterSet decimalDigitCharacterSet]

5. 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]; //--->e,l 
//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:@" "];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值