因此,当我努力理解字符串方法时,我遇到了这个有用的类NSCharacterSet。
它在本文中定义得非常好,类似于字符串,它用于将字符保存在无序的集合中。
What is differnce between NSString and NSCharacterset?
然后我发现了一个有用的方法invertedSet,它不太清楚到底发生了什么。我还读了一页,上面写了一页,他们对正在发生的事情的基本知识都略知一二,并跳进了高级的解释。所以,如果你想知道这是什么,为什么我们用它简单地说,这不是那么容易,相反,你得到这样的语句从苹果文档:“一个字符集只包含的字符不存在于接收者。”--我如何准确地使用这个?
这就是我所理解的用途。如果我解释得不对,请简单地说明一下。
示例使用:
在NSCharacterSetyou中创建一个字符列表,以限制要包含的字符串。
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.那么,这是如何正确地使用该功能,还是我错过了什么?
谢谢
史蒂夫
发布于 2013-07-13 16:10:29
字符集就是一组字符.当你倒置一个字符集时,你会得到一个新的字符集,它包含除原始字符集以外的所有字符。
在您的示例中,您从包含10个标准数字的字符集开始。当你倒置这个集合时,你会得到一个集合,它包含除10位数字以外的所有字符。
发布于 2013-07-13 16:09:58
validCharSet = [NSCharacterSet characterSetWithCharactersInString:validNumberChars];这将创建一个包含10个字符( 0、1、.、9 )的字符集。
invertedValidCharSet = [validCharSet invertedSet];这将创建倒排字符集,即所有Unicode字符的集合,而不包含上面的10个字符。
scrubbedString = [inputString stringByTrimmingCharactersInSet:invertedValidCharSet];这将从inputString的开头和结尾删除invertedValidCharSet中的所有字符。例如,如果
inputString = @"abc123d€f567ghj"然后
scrubbedString = @"123d€f567"Is并不像您所期望的那样,从给定的集合中删除所有字符。
实现这一目标的一种方法是(从NSString - replacing characters from NSCharacterSet复制):
scrubbedString = [[inputString componentsSeparatedByCharactersInSet:invertedValidCharSet] componentsJoinedByString:@""]这可能不是最有效的方法,但由于您的问题是关于理解NSCharacterSet,我希望它能有所帮助。
https://stackoverflow.com/questions/17631701
复制相似问题