string.Format () mit der Angabe "Eingabezeichenfolge hat nicht das richtige Format"

115

Was mache ich hier falsch?

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);

Ich bekomme

Die Eingabezeichenfolge hatte nicht das richtige Format

beim Versuch, sich zu ändern {0}. Ich mache das in C # und WinForms.

Formatausnahme
wurde nicht behandelt Die Eingabezeichenfolge hatte nicht das richtige Format

Tipps zur Fehlerbehebung, die ich bekomme:

Stellen Sie sicher, dass Ihre Methodenargumente das richtige Format haben. Wenn Sie eine Zeichenfolge in datetime konvertieren, analysieren Sie die Zeichenfolge, um das Datum zu entfernen, bevor Sie jede Variable in das DateTime-Objekt einfügen.

Mr.Rendezvous
quelle

Antworten:

303

string.Format()betrachtet jedes '{' oder '}' als Teil eines Platzhalters (wie '{0}', das Sie bereits verwenden). Sie müssen jedem wörtlichen Vorkommen entkommen, indem Sie es verdoppeln.

Also in Ihrem Fall:

 string tmp = @"
    if (UseImageFiles) {{
        ...
    }}";
Christian.K
quelle
4
Danke dir! Die Fehlermeldung "Eingabezeichenfolge hatte nicht das richtige Format" war für mich überhaupt nicht hilfreich. Ich dachte, einer meiner Parameter wäre null oder so.
Styfle