3

次のような JavaScript の文字列があるとします。

var str = "Item%5B9%5D.Something%5B0%5D.Prop1=1&Item%5B9%5D.Something%5B0%5D.Prop2=False&Item%5B9%5D.Something%5B0%5D.Prop3=10%2F04%2F2013+00%3A00%3A00&Item%5B9%5D.Something%5B1%5D.Prop1=2&Item%5B9%5D.Something%5B1%5D.Prop2=False&Item%5B9%5D.Something%5B1%5D.Prop3=10%2F04%2F2013+00%3A00%3A00&Item%5B9%5D.Something%5B2%5D.Prop1=3&Item%5B9%5D.Something%5B2%5D.Prop2=False&Item%5B9%5D.Something%5B2%5D.Prop3=29%2F04%2F2013+00%3A00%3A00&Item%5B9%5D.Something%5B3%5D.Prop1=4&Item%5B9%5D.Something%5B3%5D.Prop2=False&Item%5B9%5D.Something%5B3%5D.Prop3=29%2F04%2F2013+00%3A00%3A00"

そして、それを次のようにしたかった:

var str = "Something%5B0%5D.Prop1=1&Something%5B0%5D.Prop2=False&Something%5B0%5D.Prop3=10%2F04%2F2013+00%3A00%3A00&Something%5B1%5D.Prop1=2&Something%5B1%5D.Prop2=False&Something%5B1%5D.Prop3=10%2F04%2F2013+00%3A00%3A00&Something%5B2%5D.Prop1=3&Something%5B2%5D.Prop2=False&Something%5B2%5D.Prop3=29%2F04%2F2013+00%3A00%3A00&Something%5B3%5D.Prop1=4&Something%5B3%5D.Prop2=False&Something%5B3%5D.Prop3=29%2F04%2F2013+00%3A00%3A00"

つまり、Item%5BX%5D をすべて削除します。部品

どうすればこれを行うことができますか?私は次のようなものを使用することを考えました:

str = str.substring(str.indexOf('Something'), str.length);

しかし、明らかにそれは最初の出現のみを削除します。

また、%5B と %5D の間の数字は何でもかまいませんが、9 である必要はありません。

これは単純であるべきもののように思えますが、何らかの理由で困惑しています。SOでいくつかの類似したものを見つけましたが、上記のすべての基準を処理するものはありませんでした.

4

6 に答える 6

6

正規表現を使用できます:

str = str.replace(/Item[^.]+\./g, '');

または、保持したいので、より正確なものが必要な場合Item%6B3%4D

str = str.replace(/Item%5B.%5D\./g, '');
于 2013-05-21T09:00:31.703 に答える
4
str = str.replace('Item%5B9%5D', '');

9編集:文字列内の任意の数字になる可能性のある部分を見逃しました。以下を使用できます。

str = str.replace(/Item%5B\d%5D\./g, '');
于 2013-05-21T09:01:19.857 に答える