2013-09-12 2 views
2

У меня длинный NSString, например. «По соображениям производительности источник данных с представлением таблицы обычно повторно использует объекты UITableViewCell. В представлении таблицы сохраняется очередь объектов ячейки, которые помечены для повторного использования. Например, если вы показывали список, содержащий 1000 строк, это было бы крайне неэффективно для создайте 1000 ячеек таблицы, тогда как гораздо эффективнее создавать несколько в настоящее время ».Как получить диапазон текста рядом с определенным словом в NSString?

Теперь, если пользователь ищет слово «поддерживает», то над NSString определенно есть это слово .. теперь я просто хочу показать только rand строки с этим словом, а не целым текстом. Поэтому использование будет знать, что этот текст имеет это слово и где он есть.

-Поиск поиска "поддерживает". -кодировать процесс NSString. -Выход будет выглядеть следующим образом: «table view поддерживает очередь объектов ячейки, которые ...» или это также может быть результатом .. «поддерживает очередь объектов ячейки, которые ...» 2-й результат был бы замечательным ...

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

NSLog(@"range.location: %lu", range.location); 

NSString *substring = [myString substringFromIndex:range.location+1]; 

NSLog(@"substring: '%@'", substring);` 

, но не успех ... от этого CODE

Пожалуйста, помогите мне получить мою цель ...

ответ

1

Это будет делать это:

- (NSString *)getSnippetContaining:(NSString *)keyword 
          inString:(NSString *)theString 
        numberOfWords:(NSUInteger)wordCount 
{ 
    NSRange range = [theString rangeOfString:keyword 
            options:NSBackwardsSearch 
            range:NSMakeRange(0, theString.length)]; 
    if (range.location == NSNotFound) { 
     return nil; 
    } 

    NSString *substring = [theString substringFromIndex:range.location]; 
    NSArray *words = [substring componentsSeparatedByString:@" "]; 
    if (wordCount > words.count) { 
     wordCount = words.count; 
    } 
    NSArray *snippetWords = [words subarrayWithRange:NSMakeRange(0, wordCount)]; 
    NSString *snippet = [snippetWords componentsJoinedByString:@" "]; 

    return snippet; 
} 

numberOfWords - длина фрагмента, который вы хотите извлечь из ввода.

Смежные вопросы