【问题标题】:C# string - creating an unescaped backslashC# 字符串 - 创建未转义的反斜杠
【发布时间】:2012-01-18 19:07:13
【问题描述】:

我正在使用 .NET (C#) 代码写入与 Perl 应用程序接口的数据库。当单引号出现在字符串中时,我需要“转义”它。 IOW,名称O'Bannon 应转换为O\'Bannon 用于数据库更新。但是,字符串操作(例如 .Replace)的所有努力都会为反斜杠生成一个转义字符,我最终得到 O\\'Bannon

我知道它实际上是在生成第二个反斜杠,因为我可以读取生成的数据库字段的值(即它不仅仅是字符串的 IDE 调试值)。

我怎样才能在输出字符串中只得到一个反斜杠?

R

【问题讨论】:

  • “我需要“转义”它......用于数据库更新。” 占位符吗?
  • 使用@符号 var RepName = @"O\'Bannon";

标签: c# .net string escaping


【解决方案1】:

我做到了

"O'Bannon".Replace("'","\\'")

结果是

"O\'Bannon"

这是你想要的吗?

【讨论】:

  • 当我把它放在 VS 的即时窗口中时,它会返回 ""O\\'Bannon"
  • @MikeHanrahan 即时窗口以有效的文字形式显示它。试试这两个表达式:"\\""\\".Length。此外,在 Watch 窗口中查看它,它应该是“原始的”。但是,如果您使用它来使其对 SQL 来说“安全”,那么该方法可能有问题
【解决方案2】:

您可以使用"\\",即转义字符后跟一个反斜杠。

在此处查看转义序列列表:http://msdn.microsoft.com/en-us/library/h21280bw.aspx

【讨论】:

    【解决方案3】:

    更好地为替换分配一个 var,以便您在需要时也可以检查它

    var RepName = "O'Bannon";
    var Repstr = RepName.Replace("'","\\'");
    

    【讨论】:

      【解决方案4】:

      您也可以使用逐字字符串

      s = s.Replace("'", @"\'");
      

      【讨论】:

        猜你喜欢
        • 2021-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-10
        • 2017-01-17
        • 2012-01-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多