2017-09-21 12 views
0

RichTextBoxで検索する「次を検索」ボタンがありますが、唯一の問題は「[e]」を検索すると「e」をマークしますRichTextBox。そして、 "["を検索すると、プログラムがクラッシュします。ここに私のコードはあります:検索ボタン、大文字と小文字を区別しないで特殊文字を受け入れる

private void downBtn_Click(object sender, EventArgs e) 
{ 
    string SearchWord = textBox1.Text; 
    if (SearchWord.Length > 0) 
    { 
     if (SearchWord != prevWord) 
     { 
      index = 0; 
      prevWord = SearchWord; 
     } 

     Regex reg = new Regex(SearchWord, RegexOptions.IgnoreCase); 

     foreach (Match find in reg.Matches(richTextBox1.Text)) 
     { 
      if (find.Index >= index) 
      { 
       richTextBox1.Select(find.Index, find.Length); 
       richTextBox1.Focus(); 
       index = find.Index + find.Length; 
       break; 
      } 
     } 
    } 
} 

答えて

2

正規表現で使われている文字が含まれないようにエスケープしてみてください。

Regex.Escapeメソッドを使用してください。

だから、あなたがあなたのコードを変更することができます:

string escapedSearchTerm = Regex.Escape(SearchWord) 
Regex reg = new Regex(escapedSearchTerm, RegexOptions.IgnoreCase); 
関連する問題