3

System.FormatException: Input string was not in a correct format when running this method. を取得しています。

フィールドの値:

arrayName = "requester";
fieldList = "\"name\" : \"shimshon\""; // "name" : "shimshon"


public override string ToString()
{
   var val = string.Format("\"{0}\" : { {1} }", arrayName, fieldList);

   return val;
}

メソッドの期待結果は

"requester" : { "name" : "shimshon" }

この形式の何が問題になっていますか?

4

5 に答える 5

7

私はあなたが欲しいと思います:

var val = string.Format("\"{0}\" : {{ {1} }}", arrayName, fieldList);

二重化された{{andに注意してください。}}これは、中かっこを文字通り出力に入れるために必要なエスケープ シーケンスです。

于 2013-07-31T14:30:17.600 に答える
1

試す

var val = string.Format("\"{0}\" : {{ {1} }}", arrayName, fieldList);
于 2013-07-31T14:31:20.497 に答える
1

変化する:

public override string ToString()
{
    var val = string.Format("\"{0}\" : { {1} }", arrayName, fieldList);

    return val;
}

の上:

public override string ToString()
{
   var val = string.Format("\"{0}\" : {{ {1} }}", arrayName, fieldList);

   return val;
}

エスケープされた中かっこの解釈方法によって、予期しない結果が生じる可能性があります。たとえば、左中かっこ、10 進数として書式設定された数値、および右中かっこを表示することを目的とした形式アイテム "{{{0:D}}}" について考えてみます。ただし、フォーマット項目は実際には次のように解釈されます。

  • 最初の 2 つの開き中かっこ ("{{") はエスケープされ、1 つの開き中かっこが生成されます。

  • 次の 3 文字 ("{0:") は、フォーマット項目の開始として解釈されます。

  • 次の文字 ("D") は Decimal の標準数値書式指定子として解釈されますが、次の 2 つのエスケープされた中かっこ ("}}") は 1 つの中かっこになります。結果の文字列 ("D}") は標準の数値書式指定子ではないため、結果の文字列は、リテラル文字列 "D}" を表示することを意味するカスタム書式文字列として解釈されます。

  • 最後の中括弧 ("}") は、フォーマット項目の終わりとして解釈されます。

  • 表示される最終結果は、リテラル文字列「{D}」です。フォーマットされるはずだった数値は表示されません。

于 2013-07-31T14:33:17.630 に答える
0

二重括弧を使用して、出力で中括弧にしたい中括弧をエスケープする必要があります。

public override string ToString()
{
   var val = string.Format("\"{0}\" : {{ {1} }}", arrayName, fieldList);

   return val;
}
于 2013-07-31T14:31:07.900 に答える
0

{フォーマットの一部ではないおよび}文字をエスケープする必要があります。

string.Format("\"{0}\" : {{ {1} }}",.....)

この MSDN ページを参照してください。

http://msdn.microsoft.com/en-us/library/txafckwd.aspx

左中括弧と右中括弧は、フォーマット項目の開始と終了として解釈されます。したがって、エスケープ シーケンスを使用して、リテラルの左中かっこまたは右中かっこを表示する必要があります。1 つの左中括弧 ("{") を表示する場合は、固定テキストに 2 つの左中括弧 ("{{") を指定し、1 つの右中括弧 ("}") を表示する場合は、2 つの右中括弧 ("}}") を指定します。フォーマット項目の中括弧は、出現順に解釈されます。ネストされたブレースの解釈はサポートされていません。

于 2013-07-31T14:30:42.467 に答える