Получение индекса символа в NSString со смещением и использование подстроки в Objective-C - PullRequest
21 голосов
/ 07 декабря 2011

У меня есть строка!

   NSString *myString=[NSString stringWithFormat:@"This is my lovely string"];

Что я хочу сделать, это:

  1. Предполагая, что первый символ в строке имеет индекс 0. Перейдите к 11-му символу (то есть 'l' в вышеприведенном случае) и найдите позицию первого встречающегося пробела назад (В приведенной выше строке позиция первое встречающееся пространство, если мы идем назад от 'l', находится в позиции 10). Назовем индекс этого пространства leSpace со значением 10.
  2. Подстановка оставшейся строки в новую строку с использованием ...

    [myString substringFromIndex:leSpace]
    

... Надеюсь, я хорошо объяснил. Пожалуйста, помогите, можете ли вы написать фрагмент или что-нибудь, чтобы помочь мне выполнить эту задачу?

1 Ответ

51 голосов
/ 07 декабря 2011
- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)aRange

Для опций используйте: NSBackwardsSearch

NSRange range = [myString rangeOfString:@" " options:NSBackwardsSearch range:NSMakeRange(0, 11)];

Пример:

NSString *myString=[NSString stringWithFormat:@"This is my lovely string"];
NSRange range = [myString rangeOfString:@" " options:NSBackwardsSearch range:NSMakeRange(0, 11)];
NSLog(@"range.location: %lu", range.location);
NSString *substring = [myString substringFromIndex:range.location+1];
NSLog(@"substring: '%@'", substring);

Вывод NSLog:

range.location: 10
substring: 'lovely string'

Конечно, должна быть проверка ошибок, что range.location не равно NSNotFound

...