注意:ここで紹介している方法は、テキストファイルから文字列を一行ずつ読み込む方法ではなく、すでにString型となっている文字列から一行ずつ読み込む方法です。テキストファイルから文字列を一行ずつ読み込む方法は、「文字コードを指定してテキストファイルを読み込む」をご覧ください。
文字列(String型)から一行ずつ読み込んで何らかの処理をしたい時、通常は文字列から改行文字の位置をIndexOfで取得し一行切り出す方法や、String.Splitメソッドにより改行文字を区切り文字として配列に分割する方法(こちら)などが考えられます。TextBoxやRichTextBoxのTextプロパティに入っている文字列であれば、Linesプロパティで配列として取得することもできます。
しかしここではあえてStreamReaderやStringReaderクラスのReadLineメソッドを使う方法を考えてみます。ReadLineメソッドは、末尾にラインフィード、あるいはキャリッジリターン+ラインフィードが付いた連続する文字列を一行とします。下の例のようにちょっと面倒なことになりますが、使える場面もあるかもしれません。
'TextBox1に入力されている文字列から一行ずつ読み込む '文字列(TextBox1に入力された文字列)からStringReaderインスタンスを作成 Dim rs As New System.IO.StringReader(TextBox1.Text) 'StreamReaderを使うと次のようになる 'Dim ms As New System.IO.MemoryStream( _ ' System.Text.Encoding.UTF8.GetBytes(TextBox1.Text)) 'Dim rs As New System.IO.StreamReader(ms) 'ストリームの末端まで繰り返す While rs.Peek() > -1 '一行読み込んで表示する Console.WriteLine(rs.ReadLine()) End While rs.Close()
//TextBox1に入力されている文字列から一行ずつ読み込む //文字列(TextBox1に入力された文字列)からStringReaderインスタンスを作成 System.IO.StringReader rs = new System.IO.StringReader(TextBox1.Text); //StreamReaderを使うと次のようになる //System.IO.MemoryStream ms = new System.IO.MemoryStream // (System.Text.Encoding.UTF8.GetBytes(TextBox1.Text)); //System.IO.StreamReader rs = new System.IO.StreamReader(ms); //ストリームの末端まで繰り返す while (rs.Peek() > -1) { //一行読み込んで表示する Console.WriteLine(rs.ReadLine()); } rs.Close();