gpt4 book ai didi

javascript - 只替换一次双引号的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-30 00:21:22 24 4
gpt4 key购买 nike

我有一个字符串,其中可能包含双引号。我知道我可以通过将 "替换为\"来转义字符串,例如:

myString.value.replace(/\"/g, "\\\"");

但是这样做会产生另一个问题,即某些双引号已经被转义。例如,如果我的字符串中已经有\",运行它会将其更改为\",这是我不想要的。

有没有办法忽略已经转义的双引号,只替换那些没有转义的双引号?

最佳答案

您可以使用 replace 和回调:

var s = s = 'abc "def" \\"foo bar\\" 123';
var r = s.replace(/(\\*)"/g, function($0, $1) {return ($1.length % 2) ? $0 : '\\' + $0; });
//=> abc \"def\" \"foo bar\" 123

更多测试:

> 'ab"c'.replace(/(\\*)"/g, function($0, $1) {return ($1.length % 2) ? $0 : '\\' + $0;}); 
"ab\"c"

> 'ab\\"c'.replace(/(\\*)"/g, function($0, $1) {return ($1.length % 2) ? $0 : '\\' + $0;});
"ab\"c"

> 'ab\\\\"c'.replace(/(\\*)"/g, function($0, $1) {return ($1.length % 2) ? $0 : '\\' + $0;});
"ab\\\"c"

> 'ab\\\\\\"c'.replace(/(\\*)"/g, function($0, $1) {return ($1.length % 2) ? $0 : '\\' + $0;});
"ab\\\"c"

> 'ab\\\\\\\\"c'.replace(/(\\*)"/g, function($0, $1) {return ($1.length % 2) ? $0 : '\\' + $0;});
"ab\\\\\"c"

关于javascript - 只替换一次双引号的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32999451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com