web-dev-qa-db-ja.com

「入力文字列の形式が正しくありません」を与えるstring.Format()

ここで何が間違っていますか?

string tmp = @"
    if (UseImageFiles) {
        vCalHeader += ""<td><img onmousedown='' src= '{0}cal_fastreverse.gif' width='13px' height='9' onmouseover='changeBorder(this, 0)' onmouseout='changeBorder(this, 1)' style='border:1px solid white'></td>\n""; //Year scroller (decrease 1 year)
        calHeight += 22;
    }";

string x = "xter";
tmp = string.Format(tmp, x);

私は得る

入力文字列が正しい形式ではありませんでした

変更しようとする場合{0}。私はこれをC#とWinFormsで行っています。

フォーマット例外が処理されませんでした
入力文字列の形式が正しくありませんでした

私が得るヒントのトラブルシューティング:

メソッドの引数が正しい形式であることを確認してください。文字列を日時に変換するときは、各変数をDateTimeオブジェクトに入れる前に、文字列を解析して日付を取り出します。

108
Mr.Rendezvous

string.Format()は、各 '{'または '}'をプレースホルダーの一部と見なします(既に使用している '{0}'など)。リテラルオカレンスを2倍にしてエスケープする必要があります。

だからあなたの場合は:

 string tmp = @"
    if (UseImageFiles) {{
        ...
    }}";
284
Christian.K