【问题标题】:How to deal with quotes within quotes in C#?如何处理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 参数而不是通过连接来构建查询。让生活更轻松、更安全。

标签: c# string quotes


【解决方案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 + "*\"\');";
        

        你基本上需要转义'"

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-11
          • 2019-05-11
          • 2013-09-24
          • 2018-07-22
          • 2016-01-07
          相关资源
          最近更新 更多