2012-04-18 65 views
2

我使用String.Format這樣:String.Format - 我的字符串有什麼問題?

String.Format("$(function() { $('{0}').menu(); });", "blaId"); 

我得到一個異常:

An exception of type 'System.FormatException' occurred and was caught. 

我該如何解決這個問題?

回答

7

你應該逃避{文字是這樣的:{{,除非他們像{0}佔位符的一部分。

String.Format("$(function() {{ $('{0}').menu(); }});", "blaId"); 
4

您的花括號內有一個無效的索引值。 String.Format認識到這是格式化的佔位符。

{ $('{0}').menu(); } 

要解決此問題,使用雙花括號逃脫:

String.Format("$(function() {{ $('{0}').menu(); }});", "blaId"); 
+0

我認爲這是不相關的事實,一些大括號「內「其他大括號,如你所說。我的意思是,像'「function(){return 1;} {0}」這樣的字符串會混淆String.Format。 – 2012-04-18 14:44:29

+0

@Shedal Fair point there。我會改變我的描述。 – Curt 2012-04-18 14:51:20

1

逃生{}

String.Format("$(function() {{ $('{0}').menu(); }});", "blaId"); 
1

其他的花括號混亂String.Format

一種解決方案是這樣寫:

String.Format("$(function() {1} $('{0}').menu(); {2});", "blaId", "{", "}"); 

但最好逃脫文字,就像這樣:

String.Format("$(function() {{ $('{0}').menu(); }});", "blaId"); 
+1

是的,第一個解決方案是可怕的,我不會建議。 – Curt 2012-04-18 14:42:22

+2

說實話,我從來沒有必須在string.format之前擺脫大括號,所以我寫了第一個作爲可能性,然後查找逃避它們的正確方法(在此期間寫了兩個其他答案) 。我的第一個預感是他們會被反斜槓逃脫,但事實並非如此。 – MCattle 2012-04-18 14:49:10

相關問題