据我所知,带有@ in的字符串需要一组双引号才能将引号插入字符串?
我已经尝试过这个原则而无济于事。以下行工作,但如果我要用参数值替换这些字符串,那么我似乎无法获得正确的编译值
var node = doc.SelectSingleNode(@"//node[@label = ""Chemist Name""]/node[@label = ""John,Smith""]");
我的尝试(其中我尝试了几个版本并最终到了这里,我现在已经开始了!)
var node = doc.SelectSingleNode(@"//node[@label = " + ""+parentID+"" + "]/node[@label = " + ""+ name +"" + "]");
是的,有人可以帮我吗?
答案 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());