2011-08-01 12 views
-2

私は、テキストファイルの開始位置とチャレーター値を格納する辞書コレクションを持っています。テキストファイルの背景テキストを強調表示するにはどうすればよいですか?

例:サンプルテキストファイル(a.txt)には、のようなテキストが含まれている可能性があります。

Dictionary<long,string> charLocation = new Dictionary<long,string>(); 

charLocation[0] = "how" 
charLocation[1] = "ow" 
charLocation[2] = "w" 
charLocation[4] = "are" 
charLocation[6] = "e" 
charLocation[5] = "re" 
charLocation[11] = "?" 
charLocation[9] = "ou?" 
charLocation[10] = "u?" 
charLocation[8] = "you?" 
charLocation[13] = "how" 
charLocation[14] = "ow" 
charLocation[15] = "w" 
charLocation[17] = "do" 
charLocation[18] = "o" 
charLocation[21] = "ou" 
charLocation[22] = "u" 
charLocation[20] = "you" 
charLocation[26] = "?" 
charLocation[24] = "do?" 
charLocation[25] = "o?" 

を次のように私は上記のテキストをインデックス化している

は今、私は、テキストファイルに「やる」「どのように」またはの各出現を強調したいです。

これについては、まず辞書コレクションで検索を行い、その文字列を見つけてテキストファイルを開き、各オカレンスのテキストをハイライトします。

どうすればいいですか?

+3

どのようにハイライトしますか?ウェブページで?フォームで? 「」というキーワードを持ついくつかの難解なXML形式ですか? :) –

+0

インデックスを使用するのではなく、単にテキストを検索するのはなぜですか? – Jens

+0

テキストファイル自体で検索語を強調表示する必要があります。たとえば、検索語のフォント(「how」)を次のように変更することができます。** how **または背景色を変更して検索語を強調表示することができます。
@Jens - 私はテキスト内の単語を直接検索することはできませんが、インデックスを作成してから単語のインデックスを検索する必要があります – Fraiser

答えて

0

テストされていませんが、これは動作するはずです。

public string HighLight (int startPoint, string text, string word) 
{ 
    if (startPoint > = 0) 
    { 
    int startIndex = text.indexOf (word, startPoint); 
    if (startIndex >= 0) 
    { 
     StringBuilder builder = new StringBuilder(); 
     builder.Append (text.Substring (0, startIndex)); 
     builder.Append ("<strong>"); 
     builder.Append (text.Substring (startIndex + 1, word.Length)); 
     builder.Append ("</strong>"); 
     builder.Append (text.Substring (startIndex + word.Length + 1)); 
     return HighLight ((startIndex + "<strong>".Length + "</strong>".Length + word.Length, builder.ToString(), word); 
    } 
    } 

    //Word not found. 
    return text; 
} 

だから、あなたができる:

string myText = "how are you? how do you do?"; 
string hightLightedText = HighLight (0, myText, "how"); 

そして、私のコードにエラーがない場合は、それが戻って「<strong>どのよう</strong>あなたは、あなたが</strong>を行うのですか<strong>?」でしょう。

次に、<strong></strong>を、あなたのテキストを「強調表示」したいと思ってもかまいません。

+0

申し訳ありませんが、私はCプログラミングの初心者です。私は私の問題に対する解決策の実装を理解できません。手伝っていただけませんか? – Fraiser

+0

答えを更新しました。デバッグモードで、関数の最初の行にブレークポイントを入れて、その動作を理解することをお勧めします。 – Johnny5

+0

ソリューションをありがとう.. – Fraiser

関連する問題