string.Format () dando "La cadena de entrada no tiene el formato correcto"

115

¿Qué hago mal aquí?

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

yo obtengo

La cadena de entrada no tenía el formato correcto

al intentar cambiar {0}. Estoy haciendo esto en C # y WinForms.

La excepción de formato no se controló
La cadena de entrada no tenía el formato correcto

Consejos para solucionar problemas que recibo:

Asegúrese de que los argumentos de su método estén en el formato correcto. Al convertir una cadena en fecha y hora, analice la cadena para eliminar la fecha antes de poner cada variable en el objeto DateTime.

Señor Rendezvous
fuente

Respuestas:

303

string.Format()considera que cada '{' o '}' es parte de un marcador de posición (como '{0}' que ya usa). Necesita escapar de cada ocurrencia literal duplicándola.

Entonces en tu caso haz:

 string tmp = @"
    if (UseImageFiles) {{
        ...
    }}";
Christian.K
fuente
4
¡Gracias! El mensaje de error "La cadena de entrada no tenía el formato correcto" no me ayudó en absoluto. Pensé que uno de mis parámetros era nulo o algo así.
styfle