2012-06-01 11 views
15

URLをエンコードしたいが、空白をプラス記号に変換したい。私はプラスに変換する%20とスペースを交換しようとした javascript encodeURIComponentとスペースを+記号に変換する

var search = "Testing this here &"; 

encodeURIComponent(search.replace(/ /gi,"+")); 

それからの出力がTesting%2Bthis%2Bhere%2B%26ですが、私はそれがしたい何

Testing+this+here+%26である。これは、私がしようとするものである

...しかし、それはうまくいかないようです。誰が私にそれが何であるか教えてもらえますか?あなたがここで間違ってやっている何

答えて

34
encodeURIComponent(search).replace(/%20/g, "+"); 

最初はあなたがプラスにスペースを変換することであるが、その後encodeURIComponent"%2B"にプラスに変換します。

+0

文字列に "実際の" + "文字が含まれていると問題が発生します。 – user2428118

+4

@ user1419007いいえ、それはできません。すべての「元の」プラスは「%2B」に変換され、「置換」によって保持されます。 – MaxArt

+0

ああ、愚かな私、ありがとう。私は8分が上がったときに最善の答えを得るためにあなたを選ぶでしょう。 – Ian

-2

You're using the wrong functionencodeURIComponentの代わりにescapeを使用してください。

var search = "Testing this here &"; 
console.log(escape(search.replace(/ /gi,"+")));​ 
+0

実際に、私たちはなぜその文字列を変換したいのか分かりません。だから、彼にとって何が最善であるかを知る方法はない。たとえば、IBM iSeriesサーバーの場合、 'escape'はうまく動作しません。 – MaxArt

+0

実際には、これはURLの美しさのためにほとんど完全ですが、検索クエリを表示するのにハッシュタグを使用しています – Ian

+0

'escape()'は[非推奨]です(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape): 'この機能はWeb標準から削除されました。いくつかのブラウザはまだそれをサポートしているかもしれませんが、それは落とされつつあります。古いプロジェクトや新しいプロジェクトでは使用しないでください。それを使っているページやWebアプリケーションがいつでも壊れる可能性がある」 –

関連する問題