了解NSCharacterSet的invertSet方法的使用

时间:2013-07-13 15:44:55

标签: ios nscharacterset

因此,当我通过理解字符串方法时,我遇到了这个有用的类 NSCharacterSet

在这篇文章中很好地定义为类似于字符串excpet,它用于将char保存在无序集合中

What is differnce between NSString and NSCharacterset?

然后我遇到了有用的方法invertSet,并且它不太明确到底发生了什么。另外,我阅读了一页上面的页面,它们都掩盖了所发生的事情的基础知识并跳进了高级解释。因此,如果您想知道这是什么以及为什么我们使用它SIMPLY put,那么从苹果文档中得到这样的语句就不那么容易了:“一个字符集只包含接收器中不存在的字符。” - 我该怎么用呢???

所以这就是我理解的用途。如果我错误地解释了这一点,请用简单的术语提供。

使用示例:

在NSCharacter中创建一个字符列表,并希望限制要包含的字符串。

NSString *validNumberChars      = @"0123456789"; //Only these are valid.

//Now assign to a NSCharacter object to use for searching and comparing later
validCharSet = [NSCharacterSet characterSetWithCharactersInString:validNumberChars ];

//Now create an inverteds set OF the validCharSet. 
NSCharacterSet *invertedValidCharSet = [validCharSet invertedSet];

//Now scrub your input string of bad character, those characters not in the validCharSet

NSString *scrubbedString = [inputString stringByTrimmingCharactersInSet:invertedValidCharSet];

//By passing in the inverted invertedValidCharSet as the characters to trim out, then you are left with only characters that are in the original set. captured here in scrubbedString.

这是如何正确使用此功能,还是我错过了什么?

由于

史蒂夫

2 个答案:

答案 0 :(得分:7)

字符集只是一组 - 一组字符。当你反转一个字符集时,你得到一个新的集合,其中包含除了原始集合中的每个字符。

在您的示例中,您将从包含10个标准数字的字符集开始。当您反转该组时,您将得到一个除10位数之外的每个字符的集合。

答案 1 :(得分:3)

validCharSet = [NSCharacterSet characterSetWithCharactersInString:validNumberChars];

这会创建一个包含10个字符01,...,9的字符集。

invertedValidCharSet = [validCharSet invertedSet];

这将创建反转字符集,即所有Unicode字符的集合,不带 上面的10个字符。

scrubbedString = [inputString stringByTrimmingCharactersInSet:invertedValidCharSet];

这将删除inputString中所有字符的 start end invertedValidCharSet。例如,如果

inputString = @"abc123d€f567ghj"

然后

scrubbedString = @"123d€f567"

不是,正如您所期望的那样,从给定的集合中删除所有字符。

实现这一目标的一种方法是(从NSString - replacing characters from NSCharacterSet复制):

scrubbedString = [[inputString componentsSeparatedByCharactersInSet:invertedValidCharSet] componentsJoinedByString:@""]

这可能不是最有效的方法,但是你的问题是关于理解 NSCharacterSet我希望它有所帮助。