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

Posted

技术标签:

【中文标题】如何处理C#中引号内的引号?【英文标题】:How to deal with quotes within quotes in C#? 【发布时间】:2011-07-04 02:34:24 【问题描述】:

主要问题: 有没有办法在 C# 中的字符串中插入 ONE 双引号

信息: 我正在尝试在 C# 中执行类似于以下 SQL Select 语句的操作

SELECT Name FROM Production.Product
WHERE CONTAINS(Name, '"chain*"');  

我是这样解释的:

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

但我将字符串返回为:

" WHERE 包含 (Name,'\"chain\"')"

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

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

【问题讨论】:

您应该考虑使用 SQL 参数而不是通过连接来构建查询。让生活更轻松、更安全。 【参考方案1】:

“@”在这里对您没有帮助。删除它,你应该没问题。这应该有效:

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

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

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

【讨论】:

【参考方案2】:

如果您查看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*""');";

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

【讨论】:

在我的情况下,“链”是一个变量,这就是问题的根源......但你的回答非常有用! ..问题解决了! :-)【参考方案3】:

可能是这样的:

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

【讨论】:

【参考方案4】:

只需将 @ 放在字符串的开头即可。

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

【讨论】:

【参考方案5】:

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

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

你基本上需要转义'"

【讨论】:

以上是关于如何处理C#中引号内的引号?的主要内容,如果未能解决你的问题,请参考以下文章

bash 如何处理嵌套引号? [复制]

在电源查询中加载 CSV 时如何处理多个引号?

Java:想要解析JSON,但是遇到好多双引号,该如何处理

什么是JSON+如何处理JSON字符串

使用 python sqlite3 模块,如何处理包含双引号的字段?

VB调用SHELL,参数路径有空格如何处理?