C#,转义双引号不按预期工作

时间:2012-04-30 16:55:09

标签: c# .net c#-4.0

我试图在xpath字符串中转义引号,如下所示:

var mktCapNode = htmlDoc.DocumentNode.SelectSingleNode("//*[@id=""yfs_j10_a""]"); 

我想传递的实际字符串是:

//*[@id="yfs_j10_a"]

这会产生编译错误:) expected; expected

我确信这很简单,但我很难过。有什么想法吗?

4 个答案:

答案 0 :(得分:7)

您需要将此字符串作为逐字字符串,以使用""作为转义

@"//*[@id=""yfs_j10_a""]"

对于普通的字符串文字,您需要使用反斜杠来转义双引号

"//*[@id=\"yfs_j10_a\"]"

答案 1 :(得分:2)

或使用转义字符'\':

"//*[@id=\"yfs_j10_a\"]"

答案 2 :(得分:1)

@前缀添加到字符串中。

@"//*[@id=""yfs_j10_a""]"

或使用\

转义引号
"//*[@id=\"yfs_j10_a\"]"

答案 3 :(得分:1)

在C#中,\字符用于转义(参见documentation)。 这与VB不同,除了“逃逸到”之外没有转义字符。

这意味着在C#中,您不需要vbCrLf来启动新行,也不需要vbTab来向字符串添加制表符。而是使用“\ r \ n”和“\ t”。

您也可以使用@字符将字符串设为文字,但我认为这不适用于引号。