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.

Виняток із формату був необробленим.
Введення рядка було не в правильному форматі

Поради щодо усунення несправностей, які я отримую:

Переконайтесь, що аргументи методу у правильному форматі. Перетворюючи рядок у date date, проаналізуйте рядок, щоб вийняти дату перед тим, як вставити кожну змінну в об'єкт DateTime.

Відповіді:


303

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

Тож у вашому випадку робіть:

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

4
Дякую! Повідомлення про помилку "Рядок введення не був у правильному форматі" мені зовсім не корисний. Я думав, що один із моїх параметрів є нульовим чи щось таке.
стайф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.