バックスラッシュからフォワードスラッシュへのレガシーシステムからのjavascript変数があります。
'/46\465531_Thumbnail.jpg'
そして私はこれに変換しようとしています:
'/46/465531_Thumbnail.jpg'
。
レガシーシステムの問題を修正する方法はありません。
IE8ブラウザーで実行しているコマンドは次のとおりです。
javascript:alert("/46\465531_Thumbnail.jpg".replace(/\\/g,"/"));
私が得る応答として:
---------------------------
Message from webpage
---------------------------
/46&5531_Thumbnail.jpg
---------------------------
OK
---------------------------
実際、私は'/46/465531_Thumbnail.jpg'
として翻訳したいだけです
なにが問題ですか?
文字列定数のバックスラッシュを2倍にする必要があります。
alert("/46\\465531_Thumbnail.jpg".replace(/\\/g,"/"));
レガシーシステムが実際にそのような埋め込みの引用符で囲まれていない(つまり、2倍にされていない)バックスラッシュを使用してページにJavaScript文字列定数を作成している場合、それは壊れており、問題が発生します。ただし、XMLやJSONなどの何らかのajax呼び出しを介して文字列を取得している場合、コードは問題ないように見えます。
実際には、\46
を文字&
のエスケープコードシーケンスとして解釈しています。文字列をハードコーディングする場合は、\
をエスケープする必要があります。
alert("/46\\465531_Thumbnail.jpg".replace(/\\/g,"/"));
^^ change \ to \\
交換部品は問題ではなく、弦そのものです。あなたの文字列:
"/46\465531_Thumbnail.jpg"
/46\465531
ではありません。むしろ、バックスラッシュはエスケープ文字として機能しています。次のように変更する必要があります。
javascript:alert("/46\\465531_Thumbnail.jpg".replace(/\\/g,"/"));
つまり、バックスラッシュでバックスラッシュをエスケープします。
交換に問題はありません。入力が間違っています。
javascript:alert("/46\\465531_Thumbnail.jpg".replace(/\\/g,"/"));
^
\---------------- need to escape this!