Чтение каждого символа в NSString - PullRequest
0 голосов
/ 20 апреля 2011

Можно ли определить местоположение и присутствие определенного символа в строке NSS в рамках target-c? Например, если у меня есть NSString @ "hello" и я хочу знать местоположение и присутствие символа "e", как я смогу это сделать?

Ответы [ 2 ]

2 голосов
/ 20 апреля 2011

Существует особый метод поиска одиночных символов в строке, но вы можете просто найти диапазон подстроки длины 1 и запросить местоположение возвращаемого диапазона, например:

NSRange charRange = [@"hello" rangeOfString:@"e"];
NSUInteger index = charRange.location;
if (index == NSNotFound) {
    NSLog(@"substring not found");
}

Вы можете найти полную документацию здесь: rangeOfString:

Чтобы найти индексы всех @"e" в @"hello", вы можете сделать что-то вроде этого, хотя:

NSString *haystack = @"hellol";
NSString *needle = @"l";
NSMutableIndexSet *indices = [NSMutableIndexSet indexSet];
NSUInteger haystackLength = [haystack length];
NSRange range = NSMakeRange(0, haystackLength);
NSRange searchRange = range;
while (range.location != NSNotFound) {
    range = [haystack rangeOfString:needle options:0 range:searchRange];
    if (range.location != NSNotFound) {
        [indices addIndex:range.location];
        NSUInteger searchLocation = range.location + 1;
        NSUInteger searchLength = haystackLength - searchLocation;
        if (searchLocation >= haystackLength) {
            break;
        }
        searchRange = NSMakeRange(searchLocation, searchLength);
    }
}
//indices now holds the indices of all occurrences of 'e' in "hello".

Документация: NSMutableIndexSet , NSIndexSet

Редактировать: Заменен алгоритм на @ bbum , как описано в его комментарии к этому ответу.

0 голосов
/ 20 апреля 2011

Посмотрите на Apple Docs для NSString .

- (NSRange)rangeOfString:(NSString *)aString
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...