13

重複の可能性:
.Netでフォーマット文字列の角かっこをエスケープする方法

C#で{または逐語的な文字列を入力するにはどうすればよいですか?}

using System;

class DoFile {

    static void Main(string[] args) {
        string templateString = @"
        \{{0}\}
        {1}
        {2}
        ";
        Console.WriteLine(templateString, "a", "b", "c");
    }
}

逐語的な文字列で「{」または「}」を使用するとエラーが発生します。これは、「{」または「}」がなどのパラメータマーキングに使用されているためだと思います{0}, {1}, {2}\{動作しません。

Unhandled Exception: System.FormatException: Input string was not in a correct format.
  at System.String.ParseFormatSpecifier (System.String str, System.Int32& ptr, System.Int32& n, System.Int32& width, System.Boolean& left_align, System.String& format) [0x00000] in <filename unknown>:0 
  at System.String.FormatHelper (System.Text.StringBuilder result, IFormatProvider provider, System.String format, System.Object[] args) [0x00000] in <filename unknown>:0 
4

3 に答える 3

16

二重中括弧で脱出する必要があります。

{{または}}それぞれ..

以下のようなもの

string.Format("This is a format string for {0} with {{literal brackets}} inside", "test");

これは、{リテラルブラケット}を内部に含むテスト用のフォーマット文字列です。

于 2011-05-13T19:37:41.900 に答える
8

あなたはそのような{{またはのように2つ入れ}}ます。

于 2011-05-13T19:37:31.870 に答える
0

{ひもに入れることについて特別なことは何もありませ}ん、それらは逃げるべきではありません。\また、 @で区切られた文字列では、エスケープ文字は効果がありません。

メソッドのリテラル{}フォーマットを使用するには、それらを2倍にします。String.Formatしたがって、フォーマット文字列は次のようになります。

string templateString = @"
    {{{0}}}
    {1}
    {2}
    ";
于 2011-05-13T19:43:01.613 に答える