結束我使用ScintillaNet,在我的C#應用程序的Scintilla的控制包裝C#亮點的話。我動態地添加了以下結尾的所有單詞:(讓我們從現在開始調用此關鍵字)。我通過使用正則表達式來實現這一點,即每次用戶按下冒號鍵時用空格分隔的關鍵字字符串。這裏是我的代碼(在CharAdded事件):與結腸
if (e.Ch == ':')
{
string wp = string.Empty;
Regex r = new Regex(@"\b\w+[:\b]");
MatchCollection m = r.Matches(Scintilla.Text);
for (int i = 0; i < m.Count; i++)
{
wp += " " + m[i].Value.Substring(0, m[i].Value.Length - 1); // Remove the colon
}
wp = wp.ToLower();
Scintilla.Lexing.Keywords[3] = wp;
}
現在的問題是,每一個新的關鍵字輸入時間和用戶按下結腸,而不是隻強調關鍵字,這將不必要地突出每一個關鍵字再次在文檔中。所以儘管我的編碼工作,這是非常糟糕的編碼,我想知道如何通過只突出顯示最後一個關鍵字鍵入我的代碼更快。任何幫助和/或想法將不勝感激。
這不回答這個問題,但你應該從字符類中刪除`\ B`。首先,在這種情況下,它並不意味着「文字邊界」,其次,`\ b`無論如何不會匹配冒號,除非下列字符是字母數字。只需使用`\ b \ w +:`。 – 2010-12-06 12:19:45