2017-06-14 110 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。例如:使用(StreamReader inputFile = File.OpenText(openFile.FileName)) – CharithJ

+1

从[help/on-topic]:*寻求调试帮助的问题(“为什么这个代码不工作?”)必须包含所需的行为,一个特定的问题或错误,以及在问题本身中重现问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。*我没有看到*特定问题或错误*(我甚至没有看到含糊不清的问题)。我也没有看到任何问题。您可能需要花几分钟时间阅读[问],然后回来并[编辑]您的文章以使其更加清晰。 –

回答

-1

This Does work .... mostly。 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); 
     } 
相关问题