フィールドに\r
が仕込まれている....!?
改行コードが混在するテキストファイルから,\r\n
だけ残し,\n
と\r
は削除したい(別の文字に置き換えたい)時があります(下参照).
あるテキストファイル
// 元の文
Hello.\r\nToday\nis\rMay.
// こんな感じにしたい
Hello.
Today is May.
解決策
以下のC#のコードで実現しました.
RemoveCRandLF.cs
var text = @"test.txt";
var result = System.Text.RegularExpressions.Regex.Replace(
input: File.ReadAllText( text ),
pattern: @"(?<!\r)\n|\r(?!\n)",
replacement: " "
);
Console.WriteLine( result );
ここで,正規表現(?<!\r)\n
は,前に\r
が無い\n
で,\r\n
にはマッチしません.
同様に\r(?!\n)
は,後ろに\n
が無い\r
で,これも\r\n
にマッチしません.
細かくテストしてないので,間違ってたらごめんね.