0
var value = "ID=advIcon1&CLASS=advIcon&PAGE=43&TOP=2%&LEFT=15%&WIDTH=20%&HEIGHT=10%&RSC=http://www.canon.com.hk/40th/index.html?source=seriesbanner&ICON=http://203.80.1.28/FlippingBook/Dev/Frontend/source/adv/tc_bn_314.jpg&ALT=Cannon Adv"

私が達成したいのは

&RSC=http://www.canon.com.hk/40th/index.html?source=seriesbanner

&RSC=http://www.canon.com.hk/40th/index.html?source#seriesbanner

&RSCとの間のすべての「=」を置き換えます&ICON

value = value.replace (/&RSC=%[=]+%&ICON/,/&RSC=%[#]+%&ICON/); 

上記は私が試したコードですが、動作しません。問題を解決するにはどうすればよいですか? ありがとう

4

2 に答える 2

2

私は次のようにします:

var value = "ID=advIcon1&CLASS=advIcon&PAGE=43&TO...";
var startIndex = value.indexOf("&RSC");
var endIndex = value.indexOf("&ICON");
var head = value.substring(0, startIndex);
var tail = value.substring(endIndex);
var body = value.substring(startIndex, endIndex);
var result = head + body.replace(/=/g, '#') + tail;

1 つのクレイジーな正規表現ですべてを実行しようとしても、何の利点もありません。

それはあなたのコードを読みにくくし、効率を低下させるだけです。

さらに良いことに、再利用できる関数にします。

// Replaces every occurrence of replaceThis with withThis in input between
// startPattern and endPattern.

function replaceCharactersBetween(input, startPattern, endPattern, replaceThis, withThis) {
    var startIndex = input.indexOf("startPattern");
    var endIndex = input.indexOf("endPattern");
    var head = input.substring(0, startIndex);
    var tail = input.substring(endIndex);
    var body = input.substring(startIndex, endIndex);
    var regex = new RegExp(replaceThis, 'g');
    return head + body.replace(regex, withThis) + tail;
}
于 2013-02-08T02:23:46.193 に答える
0

試す:

value = value.replace(/RSC=([^=]+)=([^=]+)/, 'RSC=$1#$2');

あなたも見るべきですendoceURIComponent()

于 2013-02-08T02:40:55.547 に答える