2011-01-27 12 views
44

Załóżmy, że mam ciąg jak poniżej:Jak oddzielać ciąg przez spację, używając Objective-C?

hello world  this may  have lots of sp:ace or little  space 

chciałbym rozdzielić ten ciąg do tego:

@"hello", @"world", @"this", @"may", @"have", @"lots", @"of", @"sp:ace", @"or", @"little", @"space" 

dziękuję.

+0

Twój przepis jest tutaj http://stackoverflow.com/questions/758212/objective-c-strip-out-whitespace-from-nsstring/1427224#1427224 – EmptyStack

+3

Nie widzę, dlaczego to pytanie jest głosowało jako "nie jest to prawdziwe pytanie". PO mówi, co jest dane i co jest potrzebne do osiągnięcia. – vikingosegundo

Odpowiedz

5

To bardzo proste do zrobienia tego z bloków, spróbuj coś takiego:

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]; 
}]; 
+1

, ale jeśli mam ":" w ciągu znaków, to traktuję to jako moduł wyliczający ... – user448236

74
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 != ''"]]; 

wpisane w tym formularzu nietestowanego

+4

+1 za pokonanie mnie przez 9 minut ;-) – danyowdee

21

Sugeruję dwuetapową Aproach:

NSArray *wordsAndEmptyStrings = [yourLongString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
NSArray *words = [wordsAndEmptyStrings filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"length > 0"]]; 
19

To zadziałało dla mnie

NSString * str = @"Hi Hello How Are You ?"; 
NSArray * arr = [str componentsSeparatedByString:@" "]; 
NSLog(@"Array values are : %@",arr); 
+2

dobry jeden mohit. –

-1

Potrzebowałem podzielić NSString w górę, w zasadzie rekord (linia) w odpowiednie składniki pola. Każde pole zostało oddzielone przy użyciu znaku TAB.

Znalazłem to dla mnie.

NSString *string = @"Imagine this is a string with tabs in it."; 
NSArray *array = [string componentsSeparatedByCharactersInSet: 
         [NSCharacterSet characterSetWithCharactersInString:@"\t"]]; 
NSLog(@"%@", array); 

Najwyraźniej zakładka nie jest spacją. Ale powyższe może być przydatne dla kogoś, kto chce podzielić ciąg znaków z określoną postacią.

Mam nadzieję, że komuś pomaga.

2
NSString * mainString = @"Today is your day"; 
NSArray * array = [mainString componentsSeparatedByString:@" "]; 
NSLog(@"Expected string is : %@",array);