2012-03-12 4 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

Использование инверсии неизменяемого набора символов намного эффективнее, чем инвертирование изменяемого набора символов. –

Смежные вопросы