|
.NET TIPS
OS環境ごとの改行文字列(\r\n|\n)を取得するには?[C#、VB]
デジタルアドバンテージ 一色 政彦
2010/04/08 |
|
|
WindowsやUNIXなどの各OS環境では、それぞれ改行コード(=改行を表す制御文字)が異なる。例えばWindowsでは「CR(=キャリッジ・リターン)+LF(=ライン・フィールド)」であるのに対し、UNIXでは「LF」のみである。このCRとLFは、C#やViaual Basic(VB)では、下記のように表記できる(ControlCharsは、Microsoft.VisualBasic名前空間に所属するクラス)。
- CR:「\r」(C#、エスケープ文字)、「vbCr」もしくは「ControlChars.Cr」(VB)
- LF:「\n」(C#、エスケープ文字)、「vbLf」もしくは「ControlChars.Lf」(VB)
- CR+LF:「\r\n」(C#、エスケープ文字)、「vbCrLf」もしくは「ControlChars.CrLf」(VB)
OS環境ごとの違いを意識せずに、改行コードを利用するには、Environmentクラス(System名前空間)の静的プロパティであるNewLine プロパティを利用する。Environment.NewLineプロパティの値は、.NETランタイムによって定義され、OS環境ごとに適切な改行コードを返すことが意図されている。
●Environment.NewLineプロパティのサンプル
次のコードは、Environment.NewLineプロパティを利用するコンソール・アプリケーションのサンプルである。
using System;
static class Program
{
static void Main()
{
string rt = Environment.NewLine;
if (rt.Contains("\r"))
{
Console.WriteLine("CR");
}
if (rt.Contains("\n"))
{
Console.WriteLine("LF");
}
string msg =
"改行前:" + Environment.NewLine +
"改行後";
Console.WriteLine(msg);
// Windows環境での出力例:
// CR
// LF
// 改行前:
// 改行後
// 出力を確認するために実行を止める
Console.ReadKey();
}
}
|
Module Module1
Sub Main()
Dim rt As String = Environment.NewLine
If rt.Contains(vbCr) Then
Console.WriteLine("CR")
End If
If rt.Contains(vbLf) Then
Console.WriteLine("LF")
End If
Dim msg As String = _
"改行前:" + Environment.NewLine + _
"改行後"
Console.WriteLine(msg)
' Windows環境での出力例:
' CR
' LF
' 改行前:
' 改行後
' 出力を確認するために実行を止める
Console.ReadKey()
End Sub
End Module |
|
Environment.NewLineプロパティを利用してOS環境に沿った改行コードを取得するサンプル・コード(上:C#、下:VB) |
実際には多くないだろうが、.NETアプリケーションをLinux上で動かすなど、ポータビリティを考えている場合には便利である。なお、Linuxで.NETを動かすには、Monoなどのサードパーティ製.NETランタイムを使う必要がある。
また、このEnvironment.NewLineプロパティは、インターネット上のソース・コードでもよく登場するので、明確で分かりやすい改行コードの記述方法としてもよく使用されているようだ。そのような使い方をするのもよいだろう。
カテゴリ:クラス・ライブラリ 処理対象:文字列
使用ライブラリ:Environmentクラス(System名前空間)
使用ライブラリ:ControlCharsクラス(Microsoft.VisualBasic名前空間) |
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間