Удаление всех нежелательных символов с помощью NSCharacterSet

Я хотел бы удалить все символы из моего NSString, которые не являются (числовые, алфавитные, приходящие, пробелы или периоды).

Я использую 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

Ответ 1

Создайте изменяемый набор символов и добавьте дополнительные символы, которые вы хотите сохранить. Также вы, вероятно, хотите использовать буквенно-цифровой набор символов вместо letterCharacterSet, если вы хотите сохранить номера в своей строке тоже.

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

NSCharacterSet *charactersToRemove = [charactersToKeep invertedSet];

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