1

こんにちは私はここで問題があります。+javascriptを使用して、文字列内の文字のすべてのインスタンスを置き換えようとしています。何が起こるかというと、最初のインスタンスだけが変更されているということです。

これが私のコードです:

var keyword = "Hello+Word%+";
keyword = keyword.replace("+", encodeURIComponent("+"));
alert(keyword);

のインスタンスが2つあるため、出力はHello%2BWord%+本来あるべきときになります。Hello%2BWord%%2B+

あなたはこれをチェックすることができます:http://jsfiddle.net/Wy48Z/

助けてください。前もって感謝します。

4

3 に答える 3

2

グローバルフラグが必要です。

http://jsfiddle.net/rtoal/Wy48Z/1/で修正されました

var keyword = "Hello+Word%+";
keyword = keyword.replace(/\+/g, encodeURIComponent("+"));
alert(keyword);​
于 2012-07-13T01:57:54.397 に答える
1

javascript regexは、次のように2つのスラッシュの間に表現を配置することによって実行されます。/<expression/

すべてを置き換えたい場合は、次gのように最後のものの後にを追加するだけです。

/<expression/g

あなたの場合、それは/\+/g

于 2012-07-13T01:58:01.277 に答える
1

クロスブラウザーのアプローチは、(global) フラグを指定して正規表現gを使用することです。これは、「最初のパターンだけでなく、パターンのすべての一致を処理する」ことを意味します。

keyword = keyword.replace(/\+/g, encodeURIComponent("+"));

プラス記号の前にバックスラッシュを付けていることに注意してください。そうしないと、「前のものの 1 つ以上に一致する」という特別な意味を持つからです。

于 2012-07-13T01:58:10.977 に答える