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


115

ここで私は何を間違っていますか?

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に変換するときは、文字列を解析して日付を取り出してから、各変数をDateTimeオブジェクトに入れます。

回答:


303

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

したがって、あなたの場合は次のようにします:

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

4
ありがとうございました!「入力文字列が正しい形式ではありませんでした」というエラーメッセージは、まったく役に立ちませんでした。パラメータの1つがnullか何かだと思いました。
スタイフル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.