从UIWebVIew中的HTML页面中删除部件

时间:2011-09-29 13:15:29

标签: html objective-c uiwebview nsstring

我正在尝试从html页面删除文本,我正在使用此代码:

NSRange *r;
while ((r = [commentsOnly rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound) {
        commentsOnly = [commentsOnly stringByReplacingCharactersInRange:r withString:@""];
        NSLog(@"clearing");
    }

它完美地删除了html标签,但是如何只删除一个标签?例如,titlep。我不想只删除我的标签。我想删除开始代码(<p>),两个代码之间的信息以及关闭代码(<\p>)。

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,可能会对你有所帮助:

NSString *string = @"</body>", *htmlString = @"ddsfsdf_<body>_sdfsfd_<body>ffff</body></body>";
NSRange range = [htmlString rangeOfString:string];
if (range.location != NSNotFound)
{
    range.length += range.location;
    range.location = 0;

    string = @"<body>";
    NSRange rangeOpen = [htmlString rangeOfString:string options:NSBackwardsSearch range:range];
    if (rangeOpen.location != NSNotFound)
    {
        range.length -= rangeOpen.location;
        range.location = rangeOpen.location;
        htmlString = [htmlString stringByReplacingCharactersInRange:range withString:@""];
        NSLog(@"%@", htmlString);
    }
}

答案 1 :(得分:0)

使用stringByEvaluatingJavaScriptFromString:UIWebView内执行JavaScript来执行此操作。这项工作要少得多,而且更可靠,因为它将使用WebKit的HTML解析器而不是天真的字符串替换。