2017-06-14 14 views
0

テキストファイルの各行をstreamreaderで読み込もうとしていますが、そこから私はwhileループに入り、forループは次のようになります。各トークンをリストボックスに印刷します。私はこれがうまくいくように感じる!.txtファイル内のすべての単語を検索するC#

編集:私の質問は、選択したファイルを読み、単語を区切り、リストボックスに印刷する方法です。

if (openFile.ShowDialog() == DialogResult.OK) 
      { 
       StreamReader inputFile; 
       inputFile = File.OpenText(openFile.FileName); 
       string line; 
       //int totalWords; 

       char[] delim = { '.', '!', '?', ',', '(', ')' }; 

       while (!inputFile.EndOfStream) 
       { 
        line = inputFile.ReadLine(); 
        string[] tokens = line.Split(delim); 
        for (int i = 0; i < tokens.Length; i++) 
        { 
         wordListBox.Items.Add(tokens[i]); 
        } 
       } 
       inputFile.Close(); 
      } 
+6

あなたの質問は何ですか?同じ感情を持っているかどうか知りたいですか? – CharithJ

+0

私はStreamReaderをusingブロックで使用します。 – CharithJ

+1

[help/on-topic]:*デバッグのヘルプを探す質問(「なぜこのコードは動作しませんか?」)には、必要な動作が含まれている必要があります。特定の問題またはエラー、および質問自体の中でそれを再現するのに必要な最短のコード。 *明確な問題文がない質問は、他の読者には役に立たない* *特定の問題やエラーは表示されない*(あまり目立たない)私はどんな質問も見ません。あなたは[ask]を読んだ後、あなたのポストに戻ってきて、より明確にするためにあなたの投稿を読んでほしいと思うかもしれません。 –

答えて

-1

これはほとんど動作します。 txtドキュメントはまだバックグラウンドで実行されていました。しかし、新しい行(\ n)と(\ t)は区切り文字で区切られていません。このため私はスプリット機能を使う必要があると信じています。

ありがとうございます。

+0

質問にこの情報を入れてください。あなたが何を意味するのか全く分かりません。 – pm100

+0

これは答えではありません。あなたの質問やコメントを質問に更新してください。 –

1

区切り文字配列に空白文字、'\n''\r''\t'、および' 'を追加するとどうなりますか? File.ReadAllTextを呼び出すだけで、ファイル全体が文字列として返され、デリミタで分割されます(空のエントリは削除されます)。その後

、あなたがあなたのListBoxに追加することができます単語の配列があります:あなたはStreamReaderをを使用して、ファイルからの言葉で、リストボックスを埋めるためにしようとした場合

if (openFile.ShowDialog() == DialogResult.OK) 
{ 
    char[] delims = { '.', '!', '?', ',', '(', ')', '\t', '\n', '\r', ' ' }; 

    string[] words = File.ReadAllText(openFile.FileName) 
     .Split(delims, StringSplitOptions.RemoveEmptyEntries); 

    foreach (string word in words) 
    { 
     wordListBox.Items.Add(word); 
    } 
} 
0

を - あなたはそれについて考える必要があるのStreamReaderであるため、ファイル/ネットワークストリームのケースで使用され、大きなファイルやネットワークの待ち時間/伝播などを処理します。また、大きなファイルを持っている場合、ListBoxをあまりにも多くの項目を埋めるのが良い方法ですか?私はそうは思わない。しかし、あなたの質問によると、StreamReaderを使用してそれを行う場合は、この実装をチェックしてください:

 string filename = @"D:\text.txt"; 
     var words = new List<string>(); 
     char[] delims = { '.', '!', '?', ',', '(', ')', '\t', '\n', '\r', ' ' }; 

     try 
     { 
      using (var reader = new StreamReader(filename)) 
      { 
       while (!reader.EndOfStream) 
       { 
        var line = reader.ReadLine(); 
        words.AddRange(line.Split(delims, StringSplitOptions.RemoveEmptyEntries)); 
       } 
      } 
     } 

     // now you dont need to close stream because 
     // using statement will handle it for you 

     catch // appropriate exception handling 
     { 

     } 

     foreach (string word in words) 
     { 
      wordListBox.Items.Add(word); 
     } 
関連する問題