如何在 JavaScript 中替换或编码单引号和右双引号?

Posted

技术标签:

【中文标题】如何在 JavaScript 中替换或编码单引号和右双引号?【英文标题】:How to replace or encode single and right double quotation mark in JavaScript? 【发布时间】:2022-01-05 16:29:40 【问题描述】:

我的字符串包含这个“No.”,正如你看到的那样,这不是正常的双引号。我尝试像这样使用replace 手动对其进行编码

var stmt = "select “No.”";
stmt = stmt.replace('“', '\u201c');
stmt = stmt.replace('”', '\u201d');

console.log(stmt);

但是当我登录stmt 时,我发现根本没有任何变化,并记录了这个“No.”。如何在 javascript 中编码这些特殊字符?我正在使用sequelize 将此语句插入数据库并需要对其进行编码以在 JSON 字符串中正确显示,因此最终结果应为\u201cNo.\u201d

【问题讨论】:

只使用单引号或反引号? '"'`"`,或用双引号转义 "\"" 您可能想参考这个关于编码问题的答案:***.com/questions/53739238/… 【参考方案1】:

您需要使用转义字符\来防止JS将“\u201c”和“\u201d”解释为unicode字符。

检查一下:


var stmt = "select “No.”";
stmt = stmt.replace('“', '\\u201c');
stmt = stmt.replace('”', '\\u201d');

console.log(stmt);

【讨论】:

这个解决方案有效吗? 在插入 mysql 时还没有尝试找出问题 记录结果将仅输出 1 个反斜杠,但它与反斜杠一起插入 MySQL,因此我必须将其编辑为 replace('“', '\\\u201c') 和另一个替换语句。非常感谢您的努力,我真的很感激【参考方案2】:

1) 最好一次性替换所有字符使用正则表达式/“|”/g:

var stmt = "select “No.”";
stmt = stmt.replace(/“|”/g, '"');

console.log(stmt);

2)您也可以在此处使用replaceAll

var stmt = "select “No.”";
stmt = stmt.replaceAll(/“|”/g, '"');

console.log(stmt);

3) 您也可以使用其 unicode 值替换它:

var stmt = "select “No.”";
stmt = stmt.replaceAll(/\u201C|\u201D/g, '"');

console.log(stmt);

【讨论】:

【参考方案3】:

无需使用 unicode 引用。只需像往常一样在单引号内传递引号即可。

var stmt = "select “No.”";
stmt = stmt.replace('“', '"');
stmt = stmt.replace('”', '"');

console.log(stmt);

【讨论】:

是的,目前您只是用自己替换引号,因此输出保持不变。 无论如何编码它? Laravel 对其进行编码,因此它在前端显示相同,而无需将其转换为传统引号 @YashSonalia,我不确定你想说什么。传入的字符与被替换的字符明显不同。 你想记录这个吗:"select \u201cNo.\u201d" @phpUser,我在主要问题中添加了一条评论,显示堆栈溢出中的类似问题。

以上是关于如何在 JavaScript 中替换或编码单引号和右双引号?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server:如何在表数据中用单引号查找和替换多引号

Javascript - 如何在 Kendo 模板上转义双引号和单引号

关于js怎样替换反斜杠和单引号的问题

用 \' 或 \" 替换每个单引号/双引号

JavaScript 字符串单引号双引号相互替换

python中,如何去掉字串自带的引号