将单引号转换为字符串中的转义单引号

Jus*_*son 33 c# string replace escaping

我很难问这个,但是,由于某种原因,我无法让这个工作(当天晚些时候,是的,这是我的借口).

假设我有这个字符串:

s = "John's book."
Run Code Online (Sandbox Code Playgroud)

使用replace对象String中的方法,我想将其转换为:

s = "John\'s book."
Run Code Online (Sandbox Code Playgroud)

我本来希望这段代码能给我我想要的东西:

s = s.Replace("'", "\\'")
Run Code Online (Sandbox Code Playgroud)

但是,这导致:

"John\\'s book."
Run Code Online (Sandbox Code Playgroud)

Bee*_*Guy 67

这样做,所以你不必考虑它:

s = s.Replace("'", @"\'");
Run Code Online (Sandbox Code Playgroud)

  • 我想你可能只是在调试器/检查器中查看它会显示它被转义(两次),但如果你做`Console.Write()`它应该正确输出. (8认同)
  • @manuelhe; 两个`s.Replace("'",@"\'");`和`s.Replace("'","\\'");`将给出相同的结果 - 区别在于调试器本身; 它将字符串值显示为"John'的书."`带有一个额外的斜线.但是如果你在Console或文件中输出它,你会看到真正的结果"约翰的书."`. (2认同)

Ric*_*err 7

只是为了展示另一种可能的解决方案,如果这与 MVC.NET (MVC5+) 有关:

var data= JSON.parse('@Html.Raw(HttpUtility.JavaScriptStringEncode(JsonConvert.SerializeObject(Model.memberObj)))');
Run Code Online (Sandbox Code Playgroud)

这允许您转义并将数据作为 JavaScript 传递给视图。关键部分是:

HttpUtility.JavaScriptStringEncode
Run Code Online (Sandbox Code Playgroud)