如何从 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。
您的代码不起作用的原因是 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 编码的任何类型的数据,而不仅仅是字符串。