Предположим, что у меня есть такая строка:
hello world this may have lots of sp:ace or little space
Я бы хотел разделить эту строку на:
@"hello", @"world", @"this", @"may", @"have", @"lots", @"of", @"sp:ace", @"or", @"little", @"space"
Спасибо.
NSString *aString = @"hello world this may have lots of sp:ace or little space"; NSArray *array = [aString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; array = [array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF != ''"]];
Это сработало для меня
NSString * str = @"Hi Hello How Are You ?"; NSArray * arr = [str componentsSeparatedByString:@" "]; NSLog(@"Array values are : %@",arr);
Я бы предложил двухступенчатый подход:
NSArray *wordsAndEmptyStrings = [yourLongString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; NSArray *words = [wordsAndEmptyStrings filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"length > 0"]];
NSString * mainString = @"Today is your day"; NSArray * array = [mainString componentsSeparatedByString:@" "]; NSLog(@"Expected string is : %@",array);
Это очень легко сделать с блоками, попробуйте что-то вроде этого:
NSString* s = @"hello world this may have lots of space or little space"; NSMutableArray* ar = [NSMutableArray array]; [s enumerateSubstringsInRange:NSMakeRange(0, [s length]) options:NSStringEnumerationByWords usingBlock:^(NSString* word, NSRange wordRange, NSRange enclosingRange, BOOL* stop){ [ar addObject:word]; }];