0

ソース コードを Web サイトから文字列に保存し、すべての html タグを正常に削除しました。ただし、段落間にランダムな空白があります。1 行だけの場合もあれば、4 行または 5 行になる場合もあります。

これが私がしたことです

- (NSString *)parseHTMLText:(NSString *)text {

    NSString *startingPt = @"<!-- (START) Pagination Content Wrapper -->";
    NSString *endingPt = @"<!-- (END) Pagination Content Wrapper -->";

    //isolate body text from entire source code
    NSString *leftTrimmed = [text substringFromIndex:NSMaxRange([text rangeOfString:startingPt])] ;
    NSString *completeTrimmed = [leftTrimmed substringToIndex:[leftTrimmed rangeOfString:endingPt].location];
    completeTrimmed = [completeTrimmed stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    completeTrimmed =  [self removeHTMlTagsFromString:completeTrimmed];
    completeTrimmed = [completeTrimmed stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    return completeTrimmed; 

}

- (NSString *)removeHTMlTagsFromString:(NSString *)text {

    //check if there are any html tags

    if ([text rangeOfString:@"<"].location != NSNotFound && [text rangeOfString:@">"].location != NSNotFound) {
        //find first index of "<"
        int startIndex = [text rangeOfString:@"<"].location;
        NSString *startOfTag =  [text substringFromIndex:startIndex];
        // find length to ">"
        int length = [startOfTag rangeOfString:@">"].location + 1;
        text = [text stringByReplacingCharactersInRange:NSMakeRange(startIndex, length) withString:@""];

        text = [self removeHTMlTagsFromString:text];
    }

    return text;

}

これを試しましたが、うまくいきません

completeTrimmed = [completeTrimmed stringByReplacingOccurrencesOfString:@"     " withString:@""];
4

1 に答える 1

0

元の HTML が次のようになっている場合:

<tag1>
<tag2>
<tag3>
text text text
</tag3>
</tag2>
</tag1>

次に、すべてのタグを削除しても、それらを区切る改行がまだ残っています。

プリミティブ文字列関数ではなく DOM 解析ライブラリを使用すれば、問題は解決するはずです。

于 2012-10-25T06:30:10.133 に答える