Objective c 使用NSCharacterSet删除所有不需要的字符

Objective c 使用NSCharacterSet删除所有不需要的字符,objective-c,ios,ios4,ios5,Objective C,Ios,Ios4,Ios5,我想从我的NSString中删除所有不是(数字、字母、come、space或句点)的字符 我正在使用NSCharacterSet,但它没有添加到其中的方法。我尝试了可变版本来添加空格、逗号和句点,但没有成功 // str is my string NSCharacterSet *charactersToRemove = [[ NSCharacterSet letterCharacterSet ] invertedSet ]; NSString *trimmedReplacement =

我想从我的NSString中删除所有不是(数字、字母、come、space或句点)的字符

我正在使用NSCharacterSet,但它没有添加到其中的方法。我尝试了可变版本来添加空格、逗号和句点,但没有成功

 // str is my string
 NSCharacterSet *charactersToRemove =
 [[ NSCharacterSet letterCharacterSet ] invertedSet ];

 NSString *trimmedReplacement =
 [[ str componentsSeparatedByCharactersInSet:charactersToRemove ]
 componentsJoinedByString:@"" ];
 // this removes spaces, periods, and commas too. How do I add in to the character set to keep them

创建可变字符集并添加要保留的其他字符。此外,如果您还想在字符串中保留数字,您可能打算使用AlphaNumericCharacterSet而不是letterCharacterSet

NSMutableCharacterSet *charactersToKeep = [NSMutableCharacterSet alphanumericCharacterSet];
[charactersToKeep addCharactersInString:@" ,."];

NSCharacterSet *charactersToRemove = [charactersToKeep invertedSet];

NSString *trimmedReplacement = [[ str componentsSeparatedByCharactersInSet:charactersToRemove] componentsJoinedByString:@"" ];

使用不可变字符集的反转比反转可变字符集更有效。