Как перебирать символы строки NSString - PullRequest
10 голосов
/ 22 августа 2011
NSString *myStrings = @"abcdefghijklmnopqrstuvwxyz";

Как можно перебрать каждую из букв (a, b, c, d, e и т. Д.) В цикле Objective-C for?

Ответы [ 3 ]

21 голосов
/ 22 августа 2011

Один из способов - использовать простой цикл for:

for (NSInteger charIdx=0; charIdx<myStrings.length; charIdx++)
    // Do something with character at index charIdx, for example:
    NSLog(@"%C", [myStrings characterAtIndex:charIdx]);
5 голосов
/ 17 сентября 2014

Я бы предложил использовать вместо него getCharacters: range: Вы получаете необработанный массив Unicode одним вызовом объекта и можете перебрать результат Вывод такой же, но он быстрее.

NSString *inputString = @"abcdefghijklmnopqrstuvwxyz";
NSUInteger length = inputString.length;
unichar buffer[length+1];
// do not use @selector(getCharacters:) it's unsafe
[inputString getCharacters:buffer range:NSMakeRange(0, length)];

for(int i = 0; i < length; i++)
{
    NSLog(@"%C", buffer[i]);
}
3 голосов
/ 24 февраля 2016

Перечислять подстроки символов NSString с блоком

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));

 }];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...