gpt4 book ai didi

javascript - 在 JavaScript 中转义特殊字符列表的聪明方法

转载 作者:行者123 更新时间:2023-11-30 14:00:10 25 4
gpt4 key购买 nike

我有一个特殊字符列表:+ - & | ! ( ) { } [ ] ^ ~ * ?\:

我想用一个前导的 \\ 来转义它们,除了 \ 只需要一个前导反斜杠 \例如(1+1)\2 的字符串必须更改为 \\(1\\+1\\)\\2事实上,它在每个定义的特殊字符前面加上两个反斜杠,并且在一个反斜杠前只加一个反斜杠。

我写了这个函数,效果很好:

function escapeSpecialCharacters(input) {
var output = input.replace(/\+/g, "\\\+")
.replace(/\-/g, "\\\-")
.replace(/\&/g, "\\\&")
.replace(/\|/g, "\\\|")
.replace(/\!/g, "\\\!")
.replace(/\(/g, "\\\(")
.replace(/\)/g, "\\\)")
.replace(/\{/g, "\\\{")
.replace(/\}/g, "\\\}")
.replace(/\[/g, "\\\[")
.replace(/\]/g, "\\\]")
.replace(/\^/g, "\\\^")
.replace(/\~/g, "\\\~")
.replace(/\*/g, "\\\*")
.replace(/\?/g, "\\\?")
.replace(/\:/g, "\\\:")
.replace(/\\/g, "\\\\");

return output;
}
console.log(escapeSpecialCharacters("(1+1)\\2"));

但我对当前的实现不满意。因为我认为它很难阅读和维护。

是否有任何其他“更智能”的解决方案/框架可用于解决此问题?我在想一个函数,它使用给定的特殊字符列表来替换我的字符串中的它们。

最佳答案

看到这个正则表达式了吗:

/([-\/\\^$*+?.()|[\]{}])/g

here ?在输入的模板文字上使用 String.raw,因此八进制可以解释为文字 \2\ 是异常(出于某些深不可测的原因),您可以链接 .replace()

const escape = string => string.replace(/([-\/^$*+?.()|[\]{}])/g, `\\$1`).replace(/([\\])/g, `\\\$1`);

console.log(escape(String.raw`(1+1)\2`));

关于javascript - 在 JavaScript 中转义特殊字符列表的聪明方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56441263/

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