在HTML文件中搜索

时间:2010-05-26 11:43:43

标签: iphone objective-c

在我的iPhone项目中,我有多个HTML文件在每个文件中具有不同的文本和图像内容。我需要实现搜索工具,它将返回具有匹配关键字的结果(HTML文件名)。任何人都有任何线索,我怎么能实现这一目标?感谢

4 个答案:

答案 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/ 我以前在公司场合看过它。它使用倒排索引并根据相关性返回结果。您需要存储它将创建的索引。