簡體   English   中英

使用C ++將HTML轉換為純文本

[英]Convert HTML to Plain Text using c++

我正在做郵件解析應用程序,該應用程序需要將HTML文件轉換為純文本。 關於這一點,我已經找到了一些轉換腳本。 我想在C ++中做同樣的事情。

因此,請向我建議任何用於將HTML轉換為純文本的跨平台和開源C ++庫。

在此先感謝問候Subbi

在嘗試了一些選項之后,我認為更大規模的方法是使用elink。

在ubuntu中:

sudo apt-get install elinks
elinks -dump a.html > a.txt

聽起來“顯而易見”,您可以將所有文本保留在><之間

嘗試使用正則表達式提取html標簽並將結果保存為文件文本。 但這並不簡單。 使用此幫助類DEELX-正則表達式引擎

看看html2text 它是一個命令工具,而不是純lib,但是包含剝離和轉換html的代碼。 因此,您應該可以使用它。

我發布了Windows的c ++版本, 版本最初來自@Ben Anderson的C#解決方案 注意,代碼還不夠健壯。 同樣,所有前導和結尾換行符也會被修剪。

// The trimming method comes from https://stackoverflow.com/a/1798170/1613961
wstring trim(const std::wstring& str, std::wstring& newline = L"\r\n")
{
    const auto strBegin = str.find_first_not_of(newline);
    if (strBegin == std::string::npos)
        return L""; // no content

    const auto strEnd = str.find_last_not_of(newline);
    const auto strRange = strEnd - strBegin + 1;

    return str.substr(strBegin, strRange);
}

wstring HtmlToText(wstring htmlTxt) {

    std::wregex stripFormatting(L"<[^>]*(>|$)"); //match any character between '<' and '>', even when end tag is missing

    wstring s1 = std::regex_replace(htmlTxt, stripFormatting, L"");
    wstring s2 = trim(s1);
    wstring s3 = std::regex_replace(s2, std::wregex(L"\\&nbsp;"), L" ");
    return s3;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM