从变量中的字符串转义 JavaScript 中的双引号

Escaping double quotes in JavaScript from a string in a variable

本文关键字:JavaScript 字符串 变量 转义      更新时间:2023-09-26

我有以下两种情况:

<小时 />
console.log(('hello "friend" what''s up?').replace(/'"/g, '''"'));

我收到预期的结果:

你好"朋友"怎么了?

<小时 />

但是,如果我这样做:

var val = 'hello "friend" what''s up?';
val.replace(/'"/g, '''"');
console.log(val);

我得到...

你好"朋友"怎么了?

(结果需要hello '"friend'" what's up?(

<小时 />

唯一的区别是第二个使用包含字符串的已创建的变量。为什么第二种情况实际上没有用'"替换双引号?

来自 MDN 文档:

replace(( 方法返回一个新字符串,其中模式的部分或全部匹配项由替换替换。

您需要执行val = val.replace(/'"/g, '''"');,以便通过将调用 replace 返回的新字符串分配给变量。

实际上通过做

val.replace(/'"/g, '''"');

您不会将替换的值重新分配给val 。为此,您将需要:

val = val.replace(/'"/g, '''"');
val.replace(/'"/g, '''"');

在上面的代码中,您不会重新分配给val;

尝试此操作以获得预期的结果。

val = val.replace(/'"/g, '''"');