[iOS学习] NSCharacterSet的使用详解

来源:互联网 发布:防御sql注入的手段 编辑:程序博客网 时间:2024/06/07 09:30

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:@" "];
原创粉丝点击