在我的iPhone项目中,我有多个HTML文件在每个文件中具有不同的文本和图像内容。我需要实现搜索工具,它将返回具有匹配关键字的结果(HTML文件名)。任何人都有任何线索,我怎么能实现这一目标?感谢
答案 0 :(得分:0)
您可以使用它来搜索多个html文件中的文本:
NSError *err = nil;
NSString *pageHTML = [NSString stringWithContentsOfFile:htmlfilePath encoding:NSUTF8StringEncoding error:&err];
if(err)
{
pageHTML = [NSString stringWithContentsOfFile:filePath encoding:NSASCIIStringEncoding error:&err];
}
if([searchTxtField.text length])
{
NSRange range1 = [pageHTML rangeOfString:searchTxtField.text options:NSCaseInsensitiveSearch];
if(range1.location != NSNotFound)
{
NSString *stringFound = [pageHTML substringWithRange:range1];
}
else
{
//Load the next html page.
}
}
答案 1 :(得分:0)
NSString *docsDir = [NSHomeDirectory() stringByAppendingPathComponent: @"Documents"];
NSFileManager *localFileManager=[[NSFileManager alloc] init];
NSDirectoryEnumerator *dirEnum =[localFileManager enumeratorAtPath:docsDir];
NSString *file;
NSString *stringYourelookingFor=@"String you're lookign for";
NSArray *matchingFiles=[NSMutableArray array];
while (file = [dirEnum nextObject])
if ([[file pathExtension] isEqualToString: @"html"])
NSString *currentFile = [NSString stringWithContentsOfFile:file encoding:NSUTF8StringEncoding error:&err];
if ([currentFile rangeOfString:stringYourelookingFor options:NSCaseInsensitiveSearch]!=NSNotFound)
[matchingFiles addObject:file]
}
}
[localFileManager release];
最后,matchingFiles将包含与stringYourelookingFor
匹配的所有文件答案 2 :(得分:0)
其他两个答案都非常慢且占用大量内存,因为它们要求您将磁盘上的每个文件都读入内存。
我建议在用户想要搜索之前创建自己的HTML文件索引,然后只搜索索引。这是核心数据非常出色的东西。
答案 3 :(得分:0)
CLucene是C ++中Lucene搜索库的一个实现。 http://sourceforge.net/projects/clucene/ 我以前在公司场合看过它。它使用倒排索引并根据相关性返回结果。您需要存储它将创建的索引。