对于string处理,在IOS生态系统中经常用到且用错的重要组成部分:NSCharacterSet
。下面详解一下:
NSCharacterSet
,以及它的可变版本NSMutableCharacterSet
,用面向对象的方式来表示一组Unicode字符。它经常与NSString
及NSScanner
组合起来使用,在不同的字符上做过滤、删除或者分割操作。为了给你提供这些字符是哪些字符的直观印象,请看看NSCharacterSet
提供的类方法:
1 alphanumericCharacterSet //所有数字和字母(大小写) 2 3 capitalizedLetterCharacterSet //大写 4 5 controlCharacterSet //控制符 6 7 decimalDigitCharacterSet //0-9的数字 8 9 decomposableCharacterSet //可分解 10 11 illegalCharacterSet //非法 12 13 letterCharacterSet //所有字母 14 15 lowercaseLetterCharacterSet //小写字母 16 17 newlineCharacterSet //换行符 18 19 nonBaseCharacterSet //非基础 20 21 punctuationCharacterSet //标点符号 22 23 symbolCharacterSet //符号 24 25 uppercaseLetterCharacterSet //大写字母 26 27 whitespaceAndNewlineCharacterSet //空格和换行符 28 29 whitespaceCharacterSet //空格
与它的名字所表述的相反,NSCharacterSet
跟 NSSet
一点关系都没有。
虽然底层实现不太一样,但是 NSCharacterSet
在概念上跟 NSIndexSet
还有点相似的。NSIndexSet
,之前提到过,表示一个有序的不重复的无符号整数的集合。Unicode字符跟无符号整数类似,大致对应一些拼写表示。所以,一个 NSCharacterSet +lowercaseCharacterSet
字符集与一个包含97到122范围的 NSIndexSet
是等价的。
去掉空格
NSString -stringByTrimmingCharactersInSet:
这个你需要牢牢记住的方法。它经常会传入:
NSCharacterSet +whitespaceCharacterSet (或 +whitespaceAndNewlineCharacterSet )
来删除输入字符串的头尾的空白符号。
需要重点注意的是,这个方法 仅仅 去除了 开头 和 结尾 的指定字符集中连续字符。这就是说,如果你想去除单词之间的额外空格,请看下一步。