2011-07-25 15 views
1

私はテキストファイルを持っています。その中のいくつかの行はlfで終わり、いくつかはcrlfで終わります。私はlfsを削除し、すべてのcrlfsを残す必要があります。条件付きテキストファイルの改行を削除する

は基本的に、私のファイルは、この

メアリーは彼女は非常に彼女のLF

犬を気に入っ

dog.crlf LF

を持っていたように見えます。 CRLF

私はメアリーが彼女は今、彼女の犬は非常にmuch.crlf

を気に入っdog.crlf

を持っていた、私はすべてLFSを削除しようとしたことが

する必要があります無条件に、テキストファイルに書き戻す方法を理解できませんでした。 File.WriteAllLinesを使用して文字列配列を挿入すると、自動的に改行が自動的に作成されます。 File.WriteAllTextを使用すると、1行になります。 質問は、最初のようなテキストファイルをどうやって2番目のように見えるのですか?あなたのお時間をありがとうございました。 ところで、私は同様の質問をチェックしましたが、まだそれを理解するのに問題があります。ネガティブルックの背後にあるだけで

+2

ファイルを読み込み、 'Regex.Replace(filecontents、@"(?<!\ r)\ n "、String.Empty);'([see docs](http:// msdn .microsoft.com/ja-jp/library/e7f5w83z.aspx)) –

+0

Filecontentsは単一の文字列を表しますか?もしそうなら、どのようにファイルに書き戻し、それに必要な構造を持たせるのですか?ご協力いただきありがとうございます! – Max

+0

ファイルの読み方やファイルの生成方法を投稿する必要があります。 'File'オブジェクトをいくつかのメソッドで使用していると私は理解していますが、正確な判断をするためにはもっと構造を見る必要があります。 –

答えて

3

使用正規表現はありません\rが先行\n置き換える:

DEMO

var result = Regex.Replace(sampleFileContent, @"(?<!\r)\n", String.Empty); 

(?<!が... )negative look-behindです。つまり、そのすぐ後ろに\rがない場合、\nのインスタンスだけを置き換えたいということです。

免責事項:これは、ファイルのサイズに応じて実行可能なオプションであるかどうかは関係ありません。オーバーヘッドに気を配っていない、または素早い修正を行っているなら、これは良い解決策ですが、ファイルが巨大になる場合は、より堅牢なパーサに目を通します。

+0

素晴らしいです、それは私が必要とする方法で動作します、ありがとうございます。 – Max

1

はちょうどそれをテストした:

string file = File.ReadAllText("test.txt"); 
file = file.Replace("\r", ""); 
File.WriteAllText("test_replaced.txt", file); 
+0

この場合も、** all **キャリッジリターンは、無条件に置き換えられます。そしてそれでも、OPは、往復のリターンではなく、詰まったラインフィードを置き換えたいと考えています。 - 編集:または私は間違っています... –

2

これは正規表現を使用していないブラッドクリスティーズ答え、に代わるものです。

String result = sampleFileContent.Replace("\r\n", "**newline**") 
           .Replace("\n","") 
           .Replace("**newline**","\r\n"); 

Here's a demo.このサイトによると、正規表現ソリューションよりも速いようだが、少しより多くのメモリを使用しています。

関連する問題