1

我正在尝试转义字符串中的所有正斜杠。

客观的:

convert('path/to/awesomeness/{plus}/{special-characters!}/')
'path\/to\/awesomeness\/{plus}\/{special-characters!}\/'

结果1:

'path/to/awesomeness/{plus}/{special-characters!}/'.replace(/\//g, '\/')
'path/to/awesomeness/{plus}/{special-characters!}/'

结果2:

'path/to/awesomeness/{plus}/{special-characters!}/'.replace(/\//g, '\\/')
'path\\/to\\/awesomeness\\/{plus}\\/{special-characters!}\\/'

在节点控制台中,它提供了上述输出。检查:http: //i.imgur.com/J0XQ51t.png。我该如何/替换\/

4

1 回答 1

3

您的第二次尝试实际上效果很好。问题是如何读取其中包含转义字符的字符串,如 Node 控制台所示。如果你想在字符串中间放一个撇号,你必须像这样转义它:

var s = 'I\'m cool';

同样,当您想在字符串中添加反斜杠时,您也必须将其转义:

var s = 'This is a single backslash: \\';

所以,如果你这样做:'/'.replace(/\//g, '\\')你会得到一个单字符的字符串——一个反斜杠。Node 选择向您显示字符串,因为您必须键入它才能使其在代码中有效(即转义的反斜杠,看起来像 2 个反斜杠),而不是实际情况。

Chrome 控制台不这样做,Firefox 也不这样做。在那里尝试一下,看看有什么不同。

于 2013-10-02T12:13:36.380 回答