0

JavaScript の「\」文字の問題は何ですか?

このスクリプトは機能しません:

var theText='<he:/ll/*o?|>'
function clean(txt) {
var chr = [ '\', '/', ':', '*', '?', '<', '>', '|' ];
for(i=0;i<=8;i++){txt=txt.split(chr[i]).join("")}
return txt;}
alert(clean(theText));

配列から「バックスラッシュ」を削除すると機能します。

var theText='<he:/ll/*o?|>'
function clean(txt) {
var chr = [ '/', ':', '*', '?', '<', '>', '|' ];
for(i=0;i<=7;i++){txt=txt.split(chr[i]).join("")}
return txt;}
alert(clean(theText));

書いたら動かないvar txt='text\';

この間違いは、次のようにバックスラッシュで結合された引用符から発生する可能性があります\''\'

/ 文字も必要ですが、どうすればよいですか?

4

1 に答える 1

5

バックスラッシュは終了引用符をエスケープします。バックスラッシュ自体をエスケープする必要があります。

var chr = [ '\\', '/', ':', '*', '?', '<', '>', '|' ];
//           ^--- Add another backslash to escape the original one

この動作は、たとえば配列に一重引用符を追加する場合に役立ちます。

var chr = [ ''', '/', ':', '*', '?', '<', '>', '|' ];
//           ^--- This quote closes the first and the 3rd will cause an error

一重引用符をエスケープすることにより、「通常の」文字として扱われ、文字列を閉じません:

var chr = [ '\'', '/', ':', '*', '?', '<', '>', '|' ];
//           ^--- Escaped quote, no problem

スタック オーバーフローによって適用される構文の強調表示から、前の 2 つの例の違いを確認できるはずです。

于 2012-11-19T08:14:27.170 に答える