2011-08-05 33 views
94

我在這裏做錯了什麼?string.Format()給出「輸入字符串格式不正確」

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對象之前解析字符串以取出日期。

回答

248

string.Format()將每個「{」或「}」視爲佔位符的一部分(例如您已經使用的「{0}」)。你需要通過加倍來逃避每個文字的出現。

所以你的情況做:

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

偉大的,你說對了吧:)感謝 –

+4

好了,不健全的過度貪婪,但你可能要接受這個答案;-) –

+0

@Mr。集合點:請閱讀這個帖子接受答案:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –