我正试图逃避字符串中的所有正斜杠。
目标:
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。如何将/
替换为\/
?
答案 0 :(得分:3)
你的第二次尝试实际上运作良好。问题是如何读取已转义字符的字符串,如节点控制台中所示。如果你想把一个撇号放在一个字符串的中间,你必须像这样逃避它:
var s = 'I\'m cool';
同样地,当你想在字符串中加一个反斜杠时,你也必须逃避它:
var s = 'This is a single backslash: \\';
所以,如果你这样做:'/'.replace(/\//g, '\\')
你会得到一个单字符串 - 反斜杠。节点选择向您显示字符串,因为您必须键入它以使其在代码中有效(即转义反斜杠,看起来像2个反斜杠),而不是实际情况。
Chrome控制台不会执行此操作,Firefox也不会执行此操作。尝试一下,看看差异。