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]];

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]];

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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.