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.