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.

Mr.Rendezvous
источник

Ответы:

304

string.Format()считает каждый символ "{" или "}" частью заполнителя (например, "{0}", который вы уже используете). Вам нужно избегать каждого буквального вхождения, удваивая его.

Итак, в вашем случае сделайте:

 string tmp = @"
    if (UseImageFiles) {{
        ...
    }}";
Christian.K
источник
4
Спасибо! Сообщение об ошибке «Входная строка не в правильном формате» мне совершенно не помогло. Я думал, что один из моих параметров был нулевым или что-то в этом роде.
Styfle