在@ string中添加双引号

时间:2011-04-11 12:13:36

标签: c# string

据我所知,带有@ in的字符串需要一组双引号才能将引号插入字符串?

我已经尝试过这个原则而无济于事。以下行工作,但如果我要用参数值替换这些字符串,那么我似乎无法获得正确的编译值

var node = doc.SelectSingleNode(@"//node[@label = ""Chemist Name""]/node[@label = ""John,Smith""]");

我的尝试(其中我尝试了几个版本并最终到了这里,我现在已经开始了!)

var node = doc.SelectSingleNode(@"//node[@label = " + ""+parentID+"" + "]/node[@label = " + ""+ name +"" + "]");
是的,有人可以帮我吗?

4 个答案:

答案 0 :(得分:5)

使用单引号:

var node = doc.SelectSingleNode
               (@"//node[@label = 'Chemist Name']/node[@label = 'John,Smith']");

var node = doc.SelectSingleNode(
              string.format(@"//node[@label = '{0}']/node[@label = '{1}']"
                            , parentID, name));

答案 1 :(得分:0)

您缺少另一个双引号来关闭要附加的字符串,并且在每个包含“”的字符串之前还要@。

试试这个:

var node = 
 doc.SelectSingleNode(@"//node[@label = """ + parentID + @"""]/node[@label = """ + name + @"""]");

答案 2 :(得分:0)

var node = doc.SelectSingleNode(string.format(@"//node[@label = ""{0}""]/node[@label = ""{1}""]", parentId, name));

答案 3 :(得分:0)

编写扩展方法以扩展字符串:

public static string Quote(this string input)
{
    return string.Format(@"""{0}""", input);
}

然后按如下方式使用它:

var node = doc.SelectSingleNode(@"//node[@label = " + parentID.Quote() + "]/node[@label = " + name.Quote()  + "]");

或者简单地说:

 var node = doc.SelectSingleNode(string.Format(@"//node[@label = {0}"]/node[@label = {1}"]",parentID.Quote(), name.Quote());