2012-10-30 22 views
-1

我有兩個參數傳遞給CallSome()string.Format不適用於字符串行類型參數?

string.Format("CallSome({0},'{1}');", someId, someName); 

但someName沒有爲這種由具有空間值的工作。像

其工作的 '123', '名'

但不是這個'我的名,它給出了在此之後「錯誤我

+0

你粘貼了'CallSome()'函數的代碼? – asgs

+0

不可能,除非我們正在處理一個撇號... – naveen

+0

您的JavaScript看起來像C#,我想你錯過了一個標記。這會去評估嗎?傳說說它是邪惡的。 – Theraot

回答

0

試試這個

string.Format(「CallSome({0},''{1}'');」,someId,someName);

您可以通過需要逃逸單引號把額外的單引號在開始和結束

0

假設您正在使用C#並且希望將其輸出到ASP.NET或類似Web技術中的Web響應,那麼...您的代碼應該可以工作。

例如,給定someId = 123和someName =「字,詞」:

CallSome(123,'word, word'); 

只是,檢查您在網頁中所得到的輸出代碼,它將揭示真相。


除非它被插在它是由單引號包圍的地方。

例如,給定someId = 123和someName =「字,詞」:

var something = 'CallSome(123, 'word, word')'; 

所以,第一個單引號看起來像文字的末尾至於瀏覽器而言。在這種情況下,你應該使用雙引號,像這樣:

var something = "CallSome(123, 'word, word')"; 

或本:

var something = 'CallSome(123, "word, word")'; 

或者,您可以逃脫你的單引號:

var something = 'CallSome(123, \'word, word\')'; 

除非它在論據中有引號。

例如,給定someId = 123和someName =「字」單詞」:

var something = 'CallSome(123, 'word' word')'; 

再次,第一單引號看起來像文本的末尾,只要瀏覽器而言。這情況是比較複雜一點,因爲它需要轉義引號的一種方式:

var something = "CallSome(123, 'word\' word')"; 

或者另:

var something = 'CallSome(123, "word\' word")'; 

除非它有一個新的生產線,一個JavaScript註釋,或我不知道這個論點還有什麼。

只是沒有那些!


現在,在C#中,您需要避開您的引號。要輸出雙引號,你可以這樣做:

string.Format("CallSome({0},\"{1}\");", someId, someName); 

這給:

CallSome(123,"word, word"); 

在另一方面,如果你確實需要使用單引號(我不這麼認爲,因爲錯誤),那麼你將不得不逃離他們在輸出的javascript:

string.Format("CallSome({0},\\'{1}\\');", someId, someName); 

這給:

CallSome(123, \'word, word\'); 

這是確定的,如果它是一個帶引號的字符串的一部分,如上面我的例子:

var something = 'CallSome(123, \'word, word\')'; 
相關問題