首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Qt 代碼語法高亮優化:使用循環與數組消除重複的關鍵字格式化代碼

     編輯:程式設計疑難解答

原始重複代碼

// 處理 char
QString pattern = "\\bchar\\b";
QRegExp expression(pattern);
int index = text.indexOf(expression);
while (index >= 0) {
    int length = expression.matchedLength();
    setFormat(index, length, myFormat);
    index = text.indexOf(expression, index + length);
}
// 處理 double - 幾乎完全相同的邏輯重複
QString patt = "\\bdouble\\b";
QRegExp express(patt);
int inde = text.indexOf(express);
while (inde >= 0) {
    int lengt = express.matchedLength();
    setFormat(inde, lengt, myFormat);
    inde = text.indexOf(express, inde + lengt);
}

重構後

QStringList keywords = {"\\bchar\\b", "\\bdouble\\b", "\\bint\\b", "\\bfloat\\b"}; // 可擴展
for (const QString &kw : keywords) {
    QRegExp rx(kw);
    int pos = text.indexOf(rx);
    while (pos >= 0) {
        int len = rx.matchedLength();
        setFormat(pos, len, myFormat);
        pos = text.indexOf(rx, pos + len);
    }
}

優勢

  • 新增關鍵字只需在 keywords 列表添加,無需複製粘貼邏輯。
  • 統一格式控制(顏色、字體),維護成本極低。
  • 可進一步封裝為 highlightKeywords(text, keywords, format) 通用方法。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved