我有一个包含HTML的QString字符串...有没有一种简单的方法可以从中去除HTML?我只想获取实际的文本内容。
<i>Test:</i><img src="blah.png" /><br> A test case
将变成:
Test: A test case
我想知道Qt是否有针对这个的字符串函数或实用工具。
QString s = "<i>Test:</i><img src=\"blah.png\" /><br> A test case";
s.remove(QRegExp("<[^>]*>"));
// s == "Test: A test case"
QTextDocument
可以很好地将HTML转换为纯文本。QTextDocument doc;
doc.setHtml( htmlString );
return doc.toPlainText();
我知道这个问题很旧了,但是我正在寻找一种快速且简单的方法来处理不正确的HTML。XML解析器没有给出好的结果。
QTextDocumentFragment
:
QString plainText = QTextDocumentFragment::fromHtml(htmlString).toPlainText();
- MarcusQXmlStreamReader xml(htmlString);
QString textString;
while (!xml.atEnd()) {
if ( xml.readNext() == QXmlStreamReader::Characters ) {
textString += xml.text();
}
}
但我不确定这是否是QXmlStreamReader API的100%有效用法,因为我使用它已经有一段时间了,可能会忘记一些细节。
这个答案是给那些后来阅读此帖并使用Qt5或更高版本的人。只需使用内置函数转义HTML字符,如下所示。
QString str="<h1>some hedding </h1>"; // a string containing html tags.
QString esc=str.toHtmlEscaped(); //esc contains the html escaped srring.
QString::toHtmlEscaped
不会删除 HTML 标签,只是将 <
、>
等字符转换为 HTML 代码。 - Marcus
<br>
被删除而不是被转换为换行符。 - Marcus