2012-03-12 12 views
10

Vorrei rimuovere tutti i caratteri dal mio NSString che non lo sono (numerico, alfabetico, come, spazio o punto).Rimozione di tutti i caratteri non desiderati utilizzando NSCharacterSet

Sto utilizzando NSCharacterSet ma non ha un modo di aggiungerlo. Ho provato la versione mutabile per aggiungere spazio, virgola e punto, ma non ho avuto successo.

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

risposta

32

Creare un set di caratteri mutabili e aggiungere i caratteri aggiuntivi che si desidera conservare. Probabilmente vorresti anche usare caratteri alfanumerici invece di letterCharacterSet se vuoi mantenere i numeri anche nella stringa.

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

NSCharacterSet *charactersToRemove = [charactersToKeep invertedSet]; 

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

L'inverso di un set di caratteri immutabile è molto più efficiente dell'inversione di un set di caratteri mutabili. –

Problemi correlati