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

2 回目の試行は、実際にはうまくいきました。問題は、ノード コンソールに表示されるように、エスケープ文字を含む文字列を読み取る方法です。文字列の途中にアポストロフィを置きたい場合は、次のようにエスケープする必要があります。

var s = 'I\'m cool';

同じように、バックスラッシュを文字列に入れたいときは、それもエスケープする必要があります:

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

したがって、これ'/'.replace(/\//g, '\\')を行うと、1 文字の文字列 (バックスラッシュ) が得られます。ノードは、実際の文字列ではなく、コードで有効にするために入力する必要がある文字列(つまり、2 つのバックスラッシュのように見えるエスケープされたバックスラッシュ) を表示することを選択します。

Chrome コンソールはこれを行いません。また、Firefox も行いません。そこで試してみて、違いを見てください。

于 2013-10-02T12:13:36.380 に答える