我有一个很长的NSString,例如“出于性能原因,表视图数据源通常会重用UITableViewCell对象。表视图维护一个标记为可重用的单元格对象队列。例如,如果您显示的列表包含1000行,那么它将非常低效。创建1000个表格视图单元格,而创建当前视图中的少数单元格则更有效。“
现在如果用户搜索单词“maintain”,那么NSString上面肯定有这个单词..现在我只想显示这个单词的兰特,而不是全文。因此,使用将知道这个文本有这个词,它在哪里。
- 用户搜索“维护”。 -code处理NSString。 -Output看起来像这样..“表视图维护一个单元格对象的队列......”或者这也可以是一个结果..“维护一个单元格对象的队列......” 第二个结果会很棒...
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
请帮助我实现目标......
答案 0 :(得分: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
是您希望从输入中提取的代码段的长度。