2012-03-12 59 views
10

我想从我的NSString中删除不是(数字,字母,来,空格或句点)的所有字符。使用NSCharacterSet删除所有不需要的字符

我正在使用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 

回答

32

创建一个可变字符集并添加要保留的其他字符。如果你想让字符串中的数字也可以用字母数字字符集代替letterCharacterSet。

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

NSCharacterSet *charactersToRemove = [charactersToKeep invertedSet]; 

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

使用不变字符集的反转比反转可变字符集要有效得多。 – 2017-06-30 10:04:39