.NET TIPS 複数の行を含む文字列から1行ずつ読み出すには?デジタルアドバンテージ2004/12/17 |
|
|
複数の行を含んだ1つの文字列から1行ずつ読み出して処理する場合、文字列中に含まれる改行コードにより文字列を分割することになる。しかし、OSによって改行コードは異なるため、その文字列がWindows以外のOSで作成されていると、改行コードの違いを意識しなくてはならない。以下の表に、各種OSで使用される改行コードについてまとめた。
OS
|
改行コード
|
文字コード
|
C#での表記
|
VB.NETでの表記
|
Mac OS 9まで
|
キャリッジ・リターン(CR)
|
13
|
\r
|
Cr
(またはvbCr) |
Linux、Unix、
Mac OS X |
ライン・フィード(LF)
|
10
|
\n
|
Lf
(またはvbLf) |
Windows
|
キャリッジ・リターン(CR)
+ライン・フィード(LF) |
-
|
\r\n
|
CrLfまたはNewLine
(またはvbCrLfかvbNewLine) |
各種OSで使用される改行コードとC#、VB.NETでの改行コードの表記 |
このような改行コードによる文字列分割を行う場合には、StringReaderクラス(System.IO名前空間)のReadLineメソッドが便利だ。このメソッドは、文字列中に含まれる改行コードが上記3種類のいずれであっても、その文字列から1行ずつ読み出すことができる。読み出した行には改行コードは含まれない。
StringReaderクラスでは、そのコンストラクタで対象となる文字列(複数行を含む)を指定してインスタンス化する。また、ReadLineメソッドは読み出す行がなければnull(VB.NETの場合にはNothing)を返す。
以下にStringReaderクラスを利用したサンプル・プログラムを示す。
|
|
StringReaderクラスを利用したC#のサンプル・プログラム(strreader.cs) | |
|
|
StringReaderクラスを利用したVB.NETのサンプル・プログラム(strreader.vb) | |
なお、VB.NETのCr、Lf、CrLf、NewLineは、Microsoft.VisualBasic名前空間のControlCharsモジュールで定義されている定数である。また、vbCr、vbLf、vbCrLf、vbNewLineは同名前空間のConstantsモジュールで定義されている定数である。
カテゴリ:クラス・ライブラリ 処理対象:文字列 使用ライブラリ:StringReaderクラス(System.IO名前空間) 使用ライブラリ:ControlCharsモジュール(Microsoft.VisualBasic名前空間) 使用ライブラリ:Constantsモジュール(Microsoft.VisualBasic名前空間) |
|
「.NET TIPS」 |
Insider.NET フォーラム 新着記事
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|