在从HTML转换为纯文本时,在文本末尾添加了新行

时间:2017-08-31 13:01:09

标签: html objective-c cocoa plaintext richtext

我们的应用程序中有一个Text编辑器,它支持Rich和Plain Text。因此,我们使用WebView显示RichText和NSTextView以显示纯文本,内容以HTML格式保存。我正面临着在从HTML转换时在文本末尾添加新行的问题。

示例HTML:<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">CR1<br><div><br></div><div>CR2</div></body></html>

以下是从HTML到NSString的转换代码

- (NSString *)convertHTMLToPlain:(NSString *)str {
    NSString *finalString = nil;

    NSAttributedString *attrString = nil;
    NSData *theData = [str dataUsingEncoding:NSUnicodeStringEncoding];

    if (nil != theData) {
        NSDictionary *encodingDict = [NSDictionary dictionaryWithObject:@(NSUnicodeStringEncoding) forKey:@"CharacterEncoding"];
        attrString = [[NSAttributedString alloc] initWithHTML:theData documentAttributes:&encodingDict];

        NSString *result = [attrString string];

        NSString *specialCharecter = @"\u2028";
        if ([result containsString:specialCharecter]) {
            finalString = [result stringByReplacingOccurrencesOfString:specialCharecter
                                                            withString:@""];
        } else {
            finalString = result;
        }
    }

    return finalString;
}

结果的值显示如下:

Result

您可以看到最后没有<br>标记,但它仍会添加一个新行,但如果我在webView中打开HTML文件,则会正确显示。有人能告诉我为什么会出现这种行为。我该如何解决这个问题?

0 个答案:

没有答案