2011/06/10(Fri) 22:46:29 編集(投稿者)
$と\n混在は厳しいですね。また\sが\r,\nを含んでいるので駄目ですね。
ということで、EndsWith(vbCrLf)でなかったらvbCrLfを追加しといてから処理するようにしてみました。
Dim samples = {"",
"あいうえおかきくけこ" & vbCrLf,
"あいうえおかきくけこ " & vbCrLf,
"あいうえおかきくけこ",
"ABC",
"ABC ",
"ABC ",
"ABC" & vbCrLf,
"ABC" & vbCrLf & vbCrLf,
"ABC" & vbCrLf & "XYZ",
"ABC " & vbCrLf & "XYZ ",
"ABC" & vbCrLf & vbCrLf & "XYZ",
"ABC " & vbCrLf & "XYZ " & vbCrLf & "CD EFG HIJ "
}
For Each res In (From Src In samples Select Src, a = If(Src.EndsWith(vbCrLf), Src, Src & vbCrLf)
Select Src, Des = Regex.Replace(a, "[\s-[\r\n]]+\r\n", vbCrLf))
Console.WriteLine(String.Format("{0} => {1}", res.Src.Replace(vbCrLf, "[CrLf]"), res.Des.Replace(vbCrLf, "[CrLf]")))
Next
結果:
=> [CrLf]
あいうえおかきくけこ[CrLf] => あいうえおかきくけこ[CrLf]
あいうえおかきくけこ [CrLf] => あいうえおかきくけこ[CrLf]
あいうえおかきくけこ => あいうえおかきくけこ[CrLf]
ABC => ABC[CrLf]
ABC => ABC[CrLf]
ABC => ABC[CrLf]
ABC[CrLf] => ABC[CrLf]
ABC[CrLf][CrLf] => ABC[CrLf][CrLf]
ABC[CrLf]XYZ => ABC[CrLf]XYZ[CrLf]
ABC [CrLf]XYZ => ABC[CrLf]XYZ[CrLf]
ABC[CrLf][CrLf]XYZ => ABC[CrLf][CrLf]XYZ[CrLf]
ABC [CrLf]XYZ [CrLf]CD EFG HIJ => ABC[CrLf]XYZ[CrLf]CD EFG HIJ[CrLf]