2012-02-27 8 views
0

リッチテキストボックスでC#Winformsを使用しています。私は、基本的にスペルチェッカーのために、テキスト内の単語を強調表示するためにfindメソッドを使用しています。私が抱えている問題は、単語が別の単語の中に含まれている場合、単語を強調表示したくないということです。ここに例があります:リッチテキストボックスC#Winforms - 別の単語の中に含まれている単語を強調表示しない

テキスト=これはerroです。これは2番目のエラーです。 文字列の「erro」を検索しています。最初のエラーは「エラー」に修正されます テキスト=これはエラーです。これは2番目のエラーです。私は "ERRO" を検索したとき

は、今ではそれが好きでハイライト表示さ:

これは* ERRO * Rです。これは2番目のエラーです。

実際には、別の単語の中に含まれていない場合にのみ、その単語を強調表示できますか?つまり、それが別のものの中に含まれているかどうかをチェックしてスキップすることは可能ですか?

// Find the word. 
ocrText.Find(this.ocrWords[wordToFindIndex], index, ocrText.TextLength, RichTextBoxFinds.None); 

//TODO: Check to see if the found word is not contained inside another word 

ありがとうございます。

+0

まず「単語」の固体定義を作成する必要があります。試合の左右のキャラクターを見てください。任意にchar.IsLetter()がこれらの文字に対してtrueを返す場合は、それをスキップします。 –

+0

VSエディタの* Find *ダイアログの* Match whole word *機能を意味しますか? – brgerner

答えて

1

RichTextBoxFinds列挙型 特にRichTextBoxFinds.WholeWordを使用して、オーバーロードされたRichTextBox.Findメソッドを使用する必要があります。

ocrText.Find(this.ocrWords[wordToFindIndex], index, ocrText.TextLength, RichTextBoxFinds.WholeWord); 
+0

これは本当に変です。私は実際にこれを先に使ってみましたが、うまくいきませんでした。ああ、今はありがたくありがとう。 – Jpin

0

簡単な解決策の1つは、あなたの言葉の前後にある文字をテストすることです。 たとえば、次の/前の文字が空白か行の開始/終了かどうかをテストできます。

関連する問題