javascript替换/用\ /

时间:2013-10-02 09:45:01

标签: javascript escaping

我正试图逃避字符串中的所有正斜杠。

目标:

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。如何将/替换为\/

1 个答案:

答案 0 :(得分:3)

你的第二次尝试实际上运作良好。问题是如何读取已转义字符的字符串,如节点控制台中所示。如果你想把一个撇号放在一个字符串的中间,你必须像这样逃避它:

var s = 'I\'m cool';

同样地,当你想在字符串中加一个反斜杠时,你也必须逃避它:

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

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

Chrome控制台不会执行此操作,Firefox也不会执行此操作。尝试一下,看看差异。