2016-05-16 14 views
1

をWindowsフォームにテキストファイルから空白を削除します。 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

にnullを変更するには、プログラムの実行中に 'ブレークALL'をヒットし、実行がある場所を確認します。ステップスルーして何が起こっているかを見てください。 – Blorgbeard

+1

無関係ですが、 'using'ステートメントを使っているときに' reader.Close() 'を呼び出す理由はありません。 –

+0

@GrantWinney、それは本当です。ありがとうございました – Jogi

答えて

1

ループは終了しません。

中(!(S = reader.ReadToEnd())= null)の

ReadToEndは、それがループするたびに(最後に、それは空の文字列である文字列を返すこと - nullではないが。

現在位置は、ストリームの末尾にある空の文字列

あなたのneを返す場合whileループを削除し、ちょうど行うにはいずれかの編:

s = reader.ReadToEnd() 

またはString.Emptyの

+0

あなたの答えをありがとう。フリーズ問題は解消されましたが、順序が違うホワイトスペース問題を持つ元のファイルには何も変更を加えていません。なぜどんなアイデア? – Jogi

+0

あなたはそれを保存していないのがその理由の1つです。 –

+0

保存の方法実際には、「余分なスペース」を「1カンマ」に削除して保存する必要もあります。 – Jogi

関連する問題