string.Format () fornecendo “A string de entrada não está no formato correto”

115

O que eu faço de errado aqui?

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

eu recebo

A string de entrada não estava no formato correto

ao tentar mudar {0}. Estou fazendo isso em C # e WinForms.

A exceção de formato não foi tratada
A string de entrada não estava no formato correto

Dicas para solucionar problemas que recebo:

Certifique-se de que os argumentos do seu método estejam no formato correto. Ao converter uma string em datetime, analise a string para tirar a data antes de colocar cada variável no objeto DateTime.

Mr.Rendezvous
fonte

Respostas:

303

string.Format()considera cada '{' ou '}' como parte de um espaço reservado (como '{0}' que você já usa). Você precisa escapar de cada ocorrência literal duplicando-a.

Então, no seu caso:

 string tmp = @"
    if (UseImageFiles) {{
        ...
    }}";
Christian.K
fonte
4
Obrigado! A mensagem de erro "A string de entrada não estava no formato correto" não foi útil para mim. Achei que um dos meus parâmetros fosse nulo ou algo assim.
elegante de