2012-03-12 13 views
10

Me gustaría eliminar todos los caracteres de mi NSString que no son (numéricos, alfabéticos, venidos, espacios o períodos).Eliminación de todos los caracteres no deseados utilizando el NSCharacterSet

Estoy usando el NSCharacterSet pero no tiene forma de agregarlo. Probé la versión mutable para agregar espacio, coma y punto pero no he tenido éxito.

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

Respuesta

32

Cree un juego de caracteres mutable y agregue los caracteres adicionales que desea conservar. También es probable que desee utilizar el conjunto de caracteres alfanuméricos en lugar de letterCharacterSet si desea mantener los números en su cadena también.

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

NSCharacterSet *charactersToRemove = [charactersToKeep invertedSet]; 

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

Usar el inverso de un conjunto de caracteres inmutables es mucho más eficiente que invertir un juego de caracteres mutable. –

Cuestiones relacionadas