2012-03-12 17 views
10

Chciałbym usunąć wszystkie znaki z mojego NSString, które nie są (numeryczne, alfabetyczne, come, spacja lub kropka).Usuwanie wszystkich niepożądanych znaków za pomocą NSCharacterSet

Używam NSCharacterSet, ale nie ma sposobu na dodanie do niego. Próbowałem zmienić wersję, aby dodać spację, przecinek i kropkę, ale nie udało się.

// 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 

Odpowiedz

32

Utwórz zmienny zestaw znaków i dodaj dodatkowe znaki, które chcesz zachować. Również prawdopodobnie chcesz użyć zestawu alphanumericCharacter zamiast letterCharacterSet, jeśli chcesz zachować również liczby w łańcuchu.

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

NSCharacterSet *charactersToRemove = [charactersToKeep invertedSet]; 

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

Użycie odwrotności niezmiennego zestawu znaków jest znacznie bardziej efektywne niż odwracanie zmieniającego się zestawu znaków. –

Powiązane problemy