2011-04-11 130 views
1

就我所知,帶有@的字符串需要一組雙引號將引號插入到字符串中?向@字符串添加雙引號

我已經試過這個原則,無濟於事。下面這行工作,但如果我是來取代參數值的字符串,然後我似乎無法得到正確的彙編值

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

我嘗試(其中我嘗試了好幾種版本,並在這裏結束了,在這裏我現在得到了!)

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

任何人都可以幫助我嗎?

+0

VAR節點= @ 「這是我的一個字符串以兩個雙引號 」「 」「」 Console.WriteLine(節點);輸出正確。你有沒有嘗試創建自己的XPath字符串並輸出到控制檯/調試器?您可以嘗試轉義XPath的正斜槓。 – tomasmcguinness 2011-04-11 12:23:00

回答

0

您錯過了另一個雙引號來關閉被附加的字符串,並且在每個包含「」的字符串之前還有@。

試試這個:

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

nope unfortunatley其編譯錯誤 – ricki 2011-04-11 12:20:46

+0

更正了代碼。 @在包含「」的每個字符串之前缺少@。請現在檢查它。 – Chandu 2011-04-11 12:23:55

+0

是的,它的工作原理 - 謝謝 – ricki 2011-04-11 12:30:24

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)); 
0
var node = doc.SelectSingleNode(string.format(@"//node[@label = ""{0}""]/node[@label = ""{1}""]", parentId, name)); 
+1

您錯過了幾個引號我認爲,「{0}」 - >「」{0}「」把{0}放在引號中,並且「」{1} - >「」{ 1}「」出於同樣的原因。 – 2011-04-11 12:20:10

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());