2011-01-10 16 views
64

Tengo un par de cadenas. Algunos tienen un espacio en blanco al principio y otros no. Quiero comprobar si una cadena comienza con un espacio en blanco y si es así eliminarlo.Eliminar los espacios en blanco de la cadena en Objective-C

+0

Un poco de búsqueda no dolería. Echar un vistazo a [¿Cuál es la mejor manera de recortar los espacios en blanco de una cadena en Cocoa Touch?] (Http://stackoverflow.com/questions/474270/whats-the-best-way-to-trim-whitespace-from-a -string-en-cacao-touch) – Abizern

Respuesta

192

Hay método para que en la clase NSString. Compruebe stringByTrimmingCharactersInSet:(NSCharacterSet *)set. Debe utilizar [NSCharacterSet whitespaceCharacterSet] como parámetro:

NSString *foo = @" untrimmed string "; 
NSString *trimmed = [foo stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
+4

Esto también recortar espacios en blanco (que puede o no ser deseable. (la pregunta original pide a eliminar sólo desde el principio). – lnafziger

+0

'stringByTrimmingCharactersInSet' sólo elimina caracteres desde el principio y al final de la cadena, no los que están en el medio para aquellos que están tratando de eliminar el espacio en el medio de una cadena, utilice '[SuCadena stringByReplacingOccurrencesOfString: @ " 'withString: @'"]..' –

65

se puede utilizar el método de stringByTrimmingCharactersInSet NSString con el whitespaceAndNewlineCharacterSet NSCharacterSet como tal:

NSString *testString = @" Eek! There are leading and trailing spaces "; 
NSString *trimmedString = [testString stringByTrimmingCharactersInSet: 
          [NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
+2

1 para recomendar la whitespaceAndNewlineCharacterSet en lugar de sólo la whitespaceCharacterSet. –

+1

-1 a Apple para redefinir los espacios en blanco para que no incluya saltos de línea (que debería haber hecho un nuevo lugar inlineWhitespaceCharacterSet) – AlexChaffee

+0

Esta voluntad también recortar espacios en blanco al final (que puede o no ser deseable). (La pregunta original pide simplemente eliminarlo desde el principio). – lnafziger

6

Esto eliminará sólo el espacio en blanco al principio.

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 
+0

Esta es la mejor solución para recortar los espacios en blanco principales – jcpennypincher

5

me escribió una macro rápida para reducir la cantidad de código necesario para ser escrito.

Paso 1: Modificar el archivo PCH de su aplicación, esto debe ser llamado nombre-proyecto-Prefix.pch

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

Paso 2: Disfrute de escribir código de forma menos cuando se desea recortar una cadena

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

Output: Hello World 
Cuestiones relacionadas