如何处理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#中引号内的引号?的主要内容,如果未能解决你的问题,请参考以下文章