プロが教える店舗&オフィスのセキュリティ対策術

C#でテキストを読み込んで、文字列型の変数に代入、そしてtextBoxに表示させます。その中にいくつかの空白だけの行があります。その空白行だけを削除する方法がわかりません。わかる方がいらっしゃいましたらよろしくお願いします。


FileStream file = File.Open(@"C:\text.txt",FileMode.Open);

Encoding enc = Encoding.GetEncoding("Shift_JIS");
StreamReader reader = new StreamReader(file,enc);

string A = reader.ReadToEnd();
A = Regex.Replace(A,"\r\n","");
textBox1.Text = A;

とすると全ての改行が削除されてしまいます。
正規表現をうまくつかうと出来るような気がするんですが・・・

A 回答 (4件)

この処理ならばファイルを一行ずつ読み込んでStringBuilderに追加していく方法でいいんじゃないですか?



正規表現でやりたいならば、
A = Regex.Replace(A, "\n{1,}", "\n");
でいいと思います。

ちなみに改行を\r\nで表していますが、EUCのファイルを処理するのでしょうか?

この回答への補足

htmlファイルを読み込んで、正規表現でタグを取り除いてtextBoxに表示させています。\r\nにしないと改行されないのでそうしています。

補足日時:2005/05/23 11:07
    • good
    • 0
この回答へのお礼

言われた通りStringBuilderにしてみました。
さほどストレス無く読み込めるようになりました。
ありがとうございました。

お礼日時:2005/05/24 14:32

1行1行足すときに


Bonjinさんが仰っているStringBuilderを
使えば置換するより速くなると思いますよ。



文字列を連結するには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/029 …

参考URL:http://www.atmarkit.co.jp/fdotnet/dotnettips/029 …
    • good
    • 0
この回答へのお礼

ありがとうございます。すごく早く読み込めるようになりました。

お礼日時:2005/05/24 14:30

置換する方法ではなく、



1.textBox1.Textを空に
2.テキストを1行ずつ読み込む
3.読み込んだ行が「@"^\s*$"」にマッチするかどうか判別
4.マッチしなければtextBox1.Textに足す。
5.2~4を全行読み込むまで続ける。

といった処理の方が簡単だと思います。

1行ずつ読み込む方法
http://dobon.net/vb/dotnet/file/readfile.html
(下のほうのやり方です。)

正規表現の活用法
http://www.atmarkit.co.jp/fdotnet/basics/regex01 …

参考URL:http://www.atmarkit.co.jp/fdotnet/basics/regex01 …

この回答への補足

おっしゃる通り1行ずつ読み込めばできるんですが、ファイルの容量が10MB近くあるのでかなり時間がかかるんです。

補足日時:2005/05/23 12:47
    • good
    • 0
この回答へのお礼

正規表現の活用法は参考になりました。ありがとうございます。

お礼日時:2005/05/24 14:31

Regex.Replace(A, "\r\n\r\n", "\r\n");


じゃだめなのかな?
    • good
    • 0
この回答へのお礼

Regex.Replace(A, "\r\n\r\n", "\r\n") では削除できませんでしたが、回答していただきありがとうございました。まは次回も宜しくお願いします。

お礼日時:2005/05/24 14:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A