How to iterate over string characters

NSString *myStrings = [NSString stringWithString:@"abcdefghijklmnopqrstuvwxyz"]; 

How can I repeat each of the letters (a, b, c, d, e, ...) in an Objective-c For loop?

+7
source share
3 answers

One way is to use a simple for loop:

 for (NSInteger charIdx=0; charIdx<myStrings.length; charIdx++) // Do something with character at index charIdx, for example: NSLog(@"%C", [myStrings characterAtIndex:charIdx]); 
+17
source

I would suggest using getCharacters: range: instead. You get a unicode array with one call to the object and you can iterate over the result. The result is the same, but it is faster.

 NSString *inputString = @"abcdefghijklmnopqrstuvwxyz"; NSUInteger length = inputString.length; unichar buffer[length+1]; // do not use @selector(getCharacters:) it unsafe [inputString getCharacters:buffer range:NSMakeRange(0, length)]; for(int i = 0; i < length; i++) { NSLog(@"%C", buffer[i]); } 
+4
source

Enumerate NSString Character Substrings with a Block

 NSString *characters = @"abcdefghijklmnopqrstuvwxyz"; [characters enumerateSubstringsInRange:NSMakeRange(0, characters.length) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString * _Nullable substring, NSRange substringRange, NSRange enclosingRange, BOOL * _Nonnull stop) { NSLog(@"substring: %@ substringRange: %@, enclosingRange %@", substring, NSStringFromRange(substringRange), NSStringFromRange(enclosingRange)); }]; 
+3
source

All Articles