2012-10-30 19 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\')'; 
相关问题