如何解决Nodejs在字符串中添加额外的反斜杠\
我正在尝试这个示例代码
let route = {
paths: []
}
let convertedStr0 = "/{test}/search/v1/{userId}"
let convertedStr1 = convertedStr0.replace(new RegExp("{",'g'),"(?<").replace(new RegExp("}",">\\S+)$");
console.log(convertedStr1); //Output: /(?<test>\S+)$/search/v1/(?<userId>\S+)$
route.paths[0] = convertedStr1;
console.log(route); //Output: { paths: [ '/(?<test>\\S+)$/search/v1/(?<userId>\\S+)$' ] }
我需要将路由结果写入一个带有单反斜杠 (\
) 的文件中。但是附加了一个额外的反斜杠。有人对我如何解决此问题有任何建议吗?
解决方法
反斜杠也是一个转义字符。在您的字面字符串中,">\\S+)$"
,第一个转义第二个。这意味着 "\\"
都定义了 \
的单个字面字符。
在第一个 console.log 中,您的输出是一个字符序列。在字符方面,您的字符串中只定义了一个反斜杠。
在第二个 console.log 中,您的输出是您的序列的字符串表示。所以有双反斜杠,代表一个转义另一个。
另请注意,第一个输出没有像第二种情况那样用单引号括起来。
,如果你想在输出文件中保留单反斜杠,首先stringify你的route
对象,然后用一个单斜杠替换双斜杠:
route = JSON.stringify(route,null,2)
.replaceAll("\\\\","\\");
console.log(route); //Output: { "paths": [ "/(?<test>\S+)$/search/v1/(?<userId>\S+)$" ] }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。