次のような文字列があります:
string example = @"string str = ""forty-two"";
char pad = '*';
出力は次のように 1 行で表示されます。
string str = "forty-two"; char pad = '*';
次のような出力が必要です:
string str = "forty-two";
char pad = '*';
この逐語的文字列リテラルの「char pad」の前に改行を挿入するにはどうすればいいでしょうか
ベストアンサー1
逐語的文字列リテラルでは、2 つの二重引用符を除いて、すべてのエスケープ文字が逐語的に解釈されるため、2 行の文字列が必要な場合は、手動で 2 行で記述する必要があります。
string example = @"string str = ""forty-two"";
char pad = '*';";
Console.WriteLine(example); // string str = "forty-two";
// char pad = '*';
からmsdn:
@"c:\Foo" のような文字列リテラルは、逐語的文字列リテラルと呼ばれます。これは基本的に、「次の引用符文字に達するまで、文字に解釈を適用しない」ことを意味します。したがって、逐語的文字列リテラルには、バックスラッシュ (重複しなくてもよい) や行区切り文字を含めることができます。逐語的リテラル内で二重引用符 (") を使用するには、引用符を 2 つ重ねる必要があります。たとえば、@"My name is ""Jon""" は、My name is "Jon" という文字列を表します。行区切り文字を含む逐語的文字列リテラルには、行の先頭の空白文字も含まれるため、空白文字が重要な場合には使用しない傾向があります。ただし、これらはソース コードに XML や SQL を含める場合に非常に便利です。また、行区切り文字を必要としない別の一般的な使用法は、ファイル システム パスを指定することです。
文字列自体にはまったく影響がないことに注意してください。逐語的文字列リテラルとして指定された文字列は、適切なエスケープ処理が施された通常の文字列リテラルとして指定された文字列とまったく同じです。デバッガーは、文字列を逐語的文字列リテラルとして表示することを選択する場合があります。これは、エスケープ処理を気にせずに文字列の内容を簡単に表示できるようにするためだけです。
[著者: ジョン・スキート]