我有一个文件格式如下:
sagchjvcsj kbschjsdchs sudbjsdbl avhsdvbas
sdvbchjbvsdjc kbsadcsadk kskbjdsdcksajdbc kansjdnas ajksbdajsdk
单词之间的序列white spaces
不一致。我想删除所有extra white spaces
并在单词之间只留下1 white space
。我的工作是:
private void buttonBrowse_Click(object sender, EventArgs e)
{
openFileDialogImage.Filter = "Text files | .txt";
openFileDialogImage.Multiselect = false;
DialogResult result = openFileDialogImage.ShowDialog();
if (result == DialogResult.OK)
{
textBoxFileName.Text = openFileDialogImage.FileName;
}
}
private void buttonGo_Click(object sender, EventArgs e)
{
String path = openFileDialogImage.FileName;
using (StreamReader reader = new StreamReader(new FileStream(path, FileMode.Open)))
{
string s = String.Empty;
while ((s = reader.ReadToEnd()) != null)
{
string[] parts = s.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
}
}
}
buttonBrowse
正在textBoxFileName
正确显示文件路径但是当我按下Go按钮(buttonGo
)时,程序冻结而没有输出。有人可以指导。
答案 0 :(得分:1)
你的循环永远不会结束。
while((s = reader.ReadToEnd())!= null)
ReadToEnd每次循环时返回一个字符串(最后它是一个空字符串 - 非空。
如果当前位置位于流的末尾,则返回空 串
您需要删除while循环并执行:
s = reader.ReadToEnd()
或将null更改为string.Empty