所以我试图用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();
}
答案 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)不与分隔符分隔。为此我相信需要使用拆分功能。
感谢您的帮助。