我有一个带有一些HTML的QString ...是否有一种简单的方法可以从中删除HTML?我基本上只想要实际的文本内容.
<i>Test:</i><img src="blah.png" /><br> A test case
Run Code Online (Sandbox Code Playgroud)
会成为:
Test: A test case
Run Code Online (Sandbox Code Playgroud)
我很想知道Qt是否有字符串函数或实用程序.
k06*_*06a 35
QString s = "<i>Test:</i><img src=\"blah.png\" /><br> A test case";
s.remove(QRegExp("<[^>]*>"));
// s == "Test: A test case"
Run Code Online (Sandbox Code Playgroud)
Vis*_*nda 26
如果你不关心性能,那么QTextDocument
将HTML转换为纯文本就可以了.
QTextDocument doc;
doc.setHtml( htmlString );
return doc.toPlainText();
Run Code Online (Sandbox Code Playgroud)
我知道这个问题很老,但我一直在寻找一种快速而肮脏的方法来处理错误的HTML.XML解析器没有给出好的结果.
Ves*_*niK 13
您可以尝试使用QXmlStreamReader类遍历字符串并提取所有文本(如果您保证HTML字符串是格式良好的XML).
像这样的东西:
QXmlStreamReader xml(htmlString);
QString textString;
while (!xml.atEnd()) {
if ( xml.readNext() == QXmlStreamReader::Characters ) {
textString += xml.text();
}
}
Run Code Online (Sandbox Code Playgroud)
但是我不确定它是QXmlStreamReader API的100%有效的消息,因为我很久以前就已经使用它了,可能会忘记一些东西.