Nodejs 在字符串中添加额外的反斜杠(\)
Nodejs adding extra backslash(\) in string
我正在尝试这个示例代码
let route = {
paths: []
}
let convertedStr0 = "/{test}/search/v1/{userId}"
let convertedStr1 = convertedStr0.replace(new RegExp("{", 'g'), "(?<").replace(new RegExp("}", 'g'), ">\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+)$" ] }
我正在尝试这个示例代码
let route = {
paths: []
}
let convertedStr0 = "/{test}/search/v1/{userId}"
let convertedStr1 = convertedStr0.replace(new RegExp("{", 'g'), "(?<").replace(new RegExp("}", 'g'), ">\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+)$" ] }