4

すべて(これは基本に戻ります!)、SQLServerから取得する一連の情報があります。文字列は次のようなものです

Hello, my name is Frank Butcher\n\n
and I work at Watford Car lot, 
and I am 65 years old.

メッセージは、プロセスに関する情報を提供するためにメッセージボックスに取り込まれます。を使用して文字列を読み取ります

SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandTimeout = 0;
cmd.CommandText = strSQL;
strResult = cmd.ExecuteScalar().ToString();

これは文字列を取得しますが、これをテキストボックスに入れると、メッセージは\n\n必要なダブル改行なしで表示されます。

使ってみました

strResult = strResult.Replace("\n", Environment.NewLine);

文字列にありますが、これは役に立ちません。私は精神的になっていますか、私は何を間違っていますか?

御時間ありがとうございます。

4

1 に答える 1

9

データベース内の文字列に、改行文字ではなく、リテラルのバックスラッシュと文字 "n" を保存したと仮定しています。したがって、あなたがしていることをしなければなりませんString.Replace

あなたはとても近いですが、バックスラッシュをエスケープする必要があります:

strResult = strResult.Replace("\\n", Environment.NewLine);

バックスラッシュをエスケープしないと、コンパイラは\nを改行の特別なエスケープ シーケンスであると解釈するため、その行は「NewLine を NewLine に置き換える」と同等になります (これは何もしないことがわかっています)。

または、文字列定数の前に記号を付けることもできます。これは、文字列定数を@リテラルとして扱うことを意味します。

strResult = strResult.Replace(@"\n", Environment.NewLine);
于 2012-07-12T13:36:50.013 に答える