如何处理C#中引号内的引号?

时间:2011-02-25 06:11:44

标签: c# string quotes

主要问题:
有没有办法在C#

的字符串中插入 ONE 双引号

信息:
我正尝试在C#

中执行类似以下SQL 选择语句的操作
SELECT Name FROM Production.Product
WHERE CONTAINS(Name, '"chain*"');  

我将其解释如下:

string selectCommand= @"select Name from Production.Products  
WHERE contains (Name,'\"" + chain+ "*\"')");

但是我把字符串改回来了:

  

“WHERE包含(名称,'\”链\“')”

我也试过这个SOF question的方式,但它也没有用!:

string selectCommand= @"select Name from Production.Products  
where contains (doc.document_name,'"""""" + full + """"""')");

5 个答案:

答案 0 :(得分:8)

如果查看string literals的文档,您会发现有两种格式。常规格式,您必须转义以下所有字符:

', ", \, 0, a, b, f, n, r, t, u, U, x, v.

所以你的字符串应写成如下:

string query = "WHERE CONTAINS(Name, \'\"chain*\"\');";

或逐字文字,前面带有'at'符号,您只能通过'加倍'来转义双引号:

string query = @"WHERE CONTAINS(Name, '""chain*""');";

所以只需从字符串中删除“@”即可。

答案 1 :(得分:7)

因为你的字符串开头有一个@

string selectCommand= "select Name from Production.Products where contains (doc.document_name,\'\"" + full + "*\"\');";

您基本上需要逃避'"

答案 2 :(得分:1)

只需在字符串的开头删除@即可。

在字符串中保留反斜杠的原因是因为您已经告诉字符串不要通过将@放在字符串前面来替换转义的字符序列。删除@将允许您的转义字符转义。

答案 3 :(得分:0)

这样的事情可能是:

string full = "abc";
string selectCommand= @"select Name from Production.Products where contains (doc.document_name,'""" + full + "*\"')";

答案 4 :(得分:0)

“@”在这里不会帮到你。删除它,你应该没事。这应该有效:

Console.WriteLine("...(doc.document_name,'\"" + full + "*\"')");

如果你真的想保留“@”,试试这个:

Console.WriteLine(@"...(doc.document_name,'""" + full + "*\"')");