检查/确定 QString 是不是包含 html

Posted

技术标签:

【中文标题】检查/确定 QString 是不是包含 html【英文标题】:check/determine if QString contains html检查/确定 QString 是否包含 html 【发布时间】:2017-03-15 19:31:32 【问题描述】:

由于我无法在这里找到合适的解决方案,所以我想问答这个问题:

有没有办法确定QString 是否由 html 组成,即是否是富文本(或至少包含 html)?

table/view model 中数据编辑器的 setData 的未知/QVariant 调用可能是这种情况。

【问题讨论】:

【参考方案1】:

解决方案可以是使用Qt::mightBeRichText 代替QString

#include <QTextDocument>

QString ensurePlainText(const QString& text)

    QString out;
    if (Qt::mightBeRichText(text))
    
        // is html -> convert to plain text
        QTextDocument text;
        text.setHtml(value.toString());
        out = text.toPlainText();
    
    else
    
        out = text;
    
    return out;

重要的是要注意所提出的方法uses a heuristic。它可能无法检测到 html 或错误地检测到非 html 文本中的 html。前者可能会在字符串中返回 html 标签。例如,后者会从文本中删除换行符。

【讨论】:

以上是关于检查/确定 QString 是不是包含 html的主要内容,如果未能解决你的问题,请参考以下文章

C++ Qt 返回空的 QString

检查对象数组是不是包含某个键

确定一个包是不是包含 GPL 许可证

Javascript - 无法确定 JSON 对象是不是包含 true

检查可选数组是不是包含元素和显示视图

以编程方式确定 Excel 文件 (.xls) 是不是包含宏