如何从 JS 字符串中转义双引号和单引号

本文关键字:单引号 转义 JS 字符串 | 更新日期: 2023-09-27 18:30:21

我正在从服务器端代码中分配JS string变量的值。

喜欢这个

var fbShareTitle = "@(ViewBag.LeadTitle as string)";

ViewBag返回字符串值为

A "Fantastic" Lead With 'Qoute'

现在它在控制台中给出错误

语法错误: 缺少 ; 在语句之前

我试过这个

var fbShareTitle = ("@(ViewBag.LeadTitle)").replace(/"/g, '''"');

但是现在我收到此错误。

语法错误: 缺少 ; 在语句之前

由于此字符串将在 fb 上共享,所以我无法修改字符串,例如将所有"替换为 ' e.t.c。

如何从 JS 字符串中转义双引号和单引号

您的代码不起作用的原因是 Razor 将生成以下内容:

var fbShareTitle = "A "Fantastic" Lead With 'Qoute'";

这是无效的 JavaScript。你不能简单地通过replace来修复它,因为这不是你的字符串不好的问题,而是你的代码无法解析 - replace永远不会执行。您需要在服务器端修复它,通过修改 Razor 代码来生成有问题的 JavaScript:

var fbShareTitle = @Html.Raw(Json.Encode(ViewBag.LeadTitle as string));

Json将负责引号和适当的转义; Raw将确保您不会更换<>@Html.Raw(Json.Encode(...))口头禅的额外好处是:您可以使用它来注入可以用 JSON 编码的任何类型的数据,而不仅仅是字符串。