查找.txt文件中的所有单词c#

时间:2017-06-14 00:47:44

标签: c# token delimiter

所以我试图用streamreader读取文本文件的每一行,从那里我进入while循环以到达文件的末尾for循环是将每个标记打印到列表框。我觉得这应该有效!

编辑:我的问题是如何阅读所选文件,分隔单词并将其打印到列表框?

  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();
            }

3 个答案:

答案 0 :(得分:2)

如果您将空白字符'\n''\r''\t'' '添加到分隔符数组,该怎么办?然后你可以调用File.ReadAllText,它将整个文件作为字符串返回,并将其拆分到你的分隔符上(同时删除空条目)。

之后,您可以添加一系列文字添加到ListBox

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);
    }
}

答案 1 :(得分:0)

如果您尝试使用StreamReader从文件填充ListBox - 您应该考虑一下,因为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);
        }

答案 2 :(得分:-1)

这很有用.... txt文档仍然在后台运行。但是,新行(\ n)和(\ t)不与分隔符分隔。为此我相信需要使用拆分功能。

感谢您的帮助。