Eliminar el espacio en blanco de la cadena en Objective-C

Respuestas:

219

Hay un método para eso en la clase NSString. Comprobar stringByTrimmingCharactersInSet:(NSCharacterSet *)set. Deberías usar [NSCharacterSet whitespaceCharacterSet]como parámetro:

NSString *foo = @" untrimmed string ";
NSString *trimmed = [foo stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
Eimantas
fuente
4
Esto también recortará los espacios en blanco finales (que pueden ser deseables o no (la pregunta original pide que se eliminen desde el principio).
lnafziger
2
stringByTrimmingCharactersInSetsolo elimina los caracteres del principio y el final de la cadena, no los del medio. Para aquellos que están tratando de quitar espacio en medio de una cuerda, use [yourString stringByReplacingOccurrencesOfString:@" " withString:@""].
Arnab
76

Puede utilizar el método stringByTrimmingCharactersInSet NSString con el whitespaceAndNewlineCharacterSet NSCharacterSet como tal:

NSString *testString = @"  Eek! There are leading and trailing spaces  ";
NSString *trimmedString = [testString stringByTrimmingCharactersInSet:
                             [NSCharacterSet whitespaceAndNewlineCharacterSet]];
John Parker
fuente
4
+1 por recomendar whitespaceAndNewlineCharacterSet en lugar de solo whitespaceCharacterSet.
Rik Smith-Unna
1
-1 a Apple por redefinir los espacios en blanco para no incluir nuevas líneas (deberían haber creado un nuevo WhitepaceCharacterSet en línea)
AlexChaffee
Esto también recortará los espacios en blanco finales (lo que puede ser deseable o no (la pregunta original pide simplemente eliminarlo desde el principio).
lnafziger
7

Escribí una macro rápida para reducir la cantidad de código que se necesitaba escribir.

Paso 1: Edite el archivo PCH de su aplicación, este debe llamarse Project-Name-Prefix.pch

#define TRIM(string) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]

Paso 2: disfruta escribiendo mucho menos código cuando quieras recortar una cadena

NSLog(@"Output: %@ %@", TRIM(@"Hello        "), TRIM(@"World      "));

Output: Hello World
usuario511037
fuente
6

Esto eliminará solo el espacio en blanco inicial.

NSString *myString = @"   123   ";
NSLog(@"mystring %@, length %d",myString, myString.length);
NSRange range = [myString rangeOfString:@"^\\s*" options:NSRegularExpressionSearch];
myString = [myString stringByReplacingCharactersInRange:range withString:@""];
NSLog(@"mystring %@, length %d",myString, myString.length);

salida

mystring    123   , length 9
mystring 123   , length 6
Ryan Heitner
fuente