4

ストリーム (私にとっては実際には COM ポート上のストリーム) で行を読み取る場合、返される文字列には \n または \r 文字 (または \r\n の組み合わせ) は含まれません。ログの目的で、それらを保持したいと思います。現在、私のループは次のようになっています。

 while (newPort.BytesToRead > 0)
 {
     received = ReadLine(newPort);

     response.Add(received);
 }

つまり、基本的には文字列を読み取り、それを という文字列のリストに追加していますresponse。私が望むのは、返された文字列receivedに、元のストリームにあった \r または \n または \r\n を含め、テキスト行を終了させることです。

これは簡単に可能ですか?または、自明ではありません!

これを行うのはかなり難しいと思います。つまり、\r を受け取った場合、次の文字を取得して \n かどうかを確認する必要があります。次の文字がない場合は、例外でタイムアウトします。次の文字があり、それが \n でない場合、次の反復で現在の文字にする必要があります...!

4

3 に答える 3

2

Environment.NewLineを追加した後に追加できますreceived

更新元の空白をそのまま維持する必要がある場合は、を使用しても意味がありませんReadLineReadBlockその場合、ファイルの小さなチャンクを読み取るかReadToEnd、全体を取得するために使用できます。メッセージを処理するために新しい行をマークする必要がある場合は、生の文字列を検索して、正規化またはトークン化するか、やりたいことを何でもできます。

于 2012-06-15T12:01:24.977 に答える