0

私が取り組んでいるプロジェクトの検索機能を強化するために、「ハイライト」機能を実装しようとしています。より大きな QString 内の検索語のすべての出現を強調表示する (css background-color span タグを適用する) ことになっています。現在、強調表示される一致は、次の正規表現で決定されます。

QRegExp reg("(\\b)(" + term + ")(\\b)|(.,:;'\"\')");

regexp は大文字と小文字を区別せず、単語境界または句読点記号が後に続く「term」のすべてのインスタンスに一致します。

現在、ハイライト コードは単純な QString::replace API 呼び出しです。

entry=entry.replace(reg,"<span style=\"background-color: " + color + "\">" + term  + "</span>");

これは機能しますが、まだバグがあります。最も重要な問題は、大文字と小文字を区別しないことです。一致が「Apple」の場合、強調表示された用語は「apple」と表示されます。一致が文の最初の単語である場合、これは問題です。

このバグを修正するために、長い QString を QStringList 配列に分割し、一度に 1 つのスロットに一致する正規表現を検索することを考えていました。この仕事を処理するためのより良い/より速い方法はありますか、それともどうすればよいですか?

4

0 に答える 0