-1

非常に簡単に言えば、変数に 1 つのバックスラッシュ文字の値を代入したいと考えています。問題は:

var myVar = '\';     // breaks because the backslash escapes the closing quote
var myVar = '\\';    // now myVar has two backslashes

私が見つけることができるすべては、バックスラッシュをバックスラッシュでエスケープすることを示しています。これは、私が常に一般的に正しいと知っていることです。ただし、これを IE で実行すると、バックスラッシュが 1 つではなく 2 つ表示されます。

これは、# を . に置き換えようとする IE デバッガーのスクリーンショットです。この問題は、文字列リテラルでバックスラッシュをエスケープしようとするあらゆる場所で発生します - string.replace() 関数は同じエラーを引き起こします。

スクリーンショット

[編集]

コメントありがとうございます。短期的には、何人かが推奨しているように、おそらく 8 進数または 16 進数の ascii を使用します。しかし、私が本当に望んでいるのは、バックスラッシュをエスケープできない理由を理解することです。

string.replace 関数を使用しない場合のより良いスクリーンショットを次に示します。同じ結果です。

ここに画像の説明を入力

[/編集]

4

4 に答える 4

1

気になる場合は、8進数または16進数のASCIIコードを使用してください;)

于 2012-07-11T15:37:39.837 に答える
1

@Prusse は正しかったことが判明しました。バックスラッシュをエスケープすることは問題ではありませんでした。問題は、IE デバッガーが'\'としてレンダリングすることでした'\\'。私の場合、壊れた文字列と同じように動作する根本的な問題があったため、これを追跡するのに時間がかかりました。

解決:

警告しようとしましたか?(アラート(myVar)付き)
-Prusse

于 2012-07-11T18:37:17.327 に答える
1

これを使用してみてください:

var backslash = String.fromCharCode(92);

例: http://jsfiddle.net/lbstr/Sjja3/

編集:関数 の必要性はありませんreplace。なぜあなたはこれをしないのですか?IEでうまく動作します。

if( dirPath === "#" ) dirPath = '\\'; 
于 2012-07-11T15:40:55.973 に答える
-1

\\の代わりに表示されることは私には理にかなっています\。引用符が付いている行を見てください。

したがって、文字列"\\nope"が。と完全に異なる場合"\nope"。デバッガーに文字列を囲む引用符がない場合は、スラッシュが1つだけであると予想されます。

于 2012-07-11T15:57:54.807 に答える