如何在没有属性字符串的情况下将html文本解析为纯文本?

时间:2016-01-08 11:16:22

标签: objective-c

如何在没有属性字符串的情况下将html文本解析为纯文本?

这是我的代码:

(NSString *)convertHTML:(NSString *)html {
    NSScanner *myScanner;
    NSString *text = nil;
    myScanner = [NSScanner scannerWithString:html];
    while ([myScanner isAtEnd] == NO) {
        [myScanner scanUpToString:@"<" intoString:NULL];
        [myScanner scanUpToString:@">" intoString:&text];
        html = [html stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@>", text] withString:@""];
    }
    //
    html = [html stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    return html;
}

3 个答案:

答案 0 :(得分:0)

假设您可以访问某种类型的UIWEbView,您可以执行一些javascript来检索包含您想要字符串化的HTML的元素的.text()吗?

答案 1 :(得分:0)

您可以使用以下代码并从here

获取
-(NSString *)stringByStrippingHTML:(NSString*)str
{
    NSRange r;
    while ((r = [str rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location     != NSNotFound)
    {
        str = [str stringByReplacingCharactersInRange:r withString:@""];
    }
    return str;
}

NSString *hstmString = @"This is <font color='red'>simple</font>";

NSString* strWithoutFormatting = [self stringByStrippingHTML:hstmString];

NSLog(@"%@", strWithoutFormatting);

它可能会帮助你:)

答案 2 :(得分:0)

如果使用图书馆是一个选项,您可以尝试HTMLKit

例如,给定以下HTML:

<p>Some <b>text</b> to <em>extract</em></p>

将其解析为纯文本的一种方法是:

// create a <div> element
HTMLElement *element = [[HTMLElement alloc] initWithTagName:@"div"];
// set its innerHTML
element.innerHTML = @"<p>Some <b>text</b> to <em>extract</em></p>";
// textContext of the element contains all the text
NSLog(@"%@", element.textContent);
// You get: 'Some text to extract'

如果您需要进一步的帮助,请告诉我。

  

如果您的HTML很简单并且解析它不是您的应用程序/项目的核心功能,那么HTMLKit可能不适合您,因为它是一个成熟的HTML解析器。