NSCharacterSet和NSMutableCharacterSet是用来表示一组Unicode字符,它经常与NSString及NSScanner组合起来使用,在不同的字符上做过滤、删除或者分割操作。
系统提供的常用的创建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:@" "];