从Windows窗体应用程序

时间:2016-05-16 23:12:59

标签: c# winforms

我有一个文件格式如下:

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)时,程序冻结而没有输出。有人可以指导。

1 个答案:

答案 0 :(得分:1)

你的循环永远不会结束。

  

while((s = reader.ReadToEnd())!= null)

ReadToEnd每次循环时返回一个字符串(最后它是一个空字符串 - 非空。

  

如果当前位置位于流的末尾,则返回空   串

您需要删除while循环并执行:

s = reader.ReadToEnd()

或将null更改为string.Empty