2011-09-24 15 views
7

Tengo un NSString que contiene algunos valores separados por un número desconocido de caracteres en espacios en blanco. Por ejemplo:Split NSString por el número de espacios en blanco

NSString* line = @"1 2  3"; 

me gustaría dividir el NSString en un NSArray de los valores de este modo: {@"1", @"2", @"3"}.

Respuesta

21

Obtener los componentes separados por @" " y retirar todos los objetos como @"" de la matriz resultante.

NSString* line = @"1 2  3"; 
NSMutableArray *array = (NSMutableArray *)[line componentsSeparatedByString:@" "]; 
[array removeObject:@""]; // This removes all objects like @"" 
+0

Interesante; No me di cuenta que 'removeObject' eliminó * todas las ocurrencias. ¡Gracias! –

+0

Esta solución es más limpia. Gracias. –

+0

Chris Doble, Chris Ledet, ¡Bienvenido! – EmptyStack

4

Esto debería hacer el truco (suponiendo que los valores no contienen espacios en blanco):

// Gives us [@"1", @"2", @"", @"", @"", @"", @"3"]. 
NSArray *values = [line componentsSeparatedByCharactersInSet: 
    [NSCharacterSet whitespaceCharacterSet]]; 

// Remove the empty strings. 
values = [values filteredArrayUsingPredicate: 
    [NSPredicate predicateWithFormat:@"SELF != ''"]]; 
Cuestiones relacionadas