Hallo,
Könnte übrigens aber mit zwei Ausdrücken performanter sein.
Warum sollte es das?
Weil das Ausführen des Ausdrucks mit den beiden (.*) meines Wissens lahm ist.
var s, type, a, e, diff1, diff2, ausdruck, treffer;
s = "?typ1=0&typ2=0";
type = "typ1";
a = new Date();
for (i = 0; i < 10000; i++) {
ausdruck = new RegExp("(.*)" + type + "=(\\d+)(.*)");
if (ausdruck.exec(s))
s1 = RegExp.$1 + type + "=" + (parseInt(RegExp.$2) + 1) + RegExp.$3;
}
e = new Date();
diff1 = e.getTime() - a.getTime();
a = new Date();
for (i = 0; i < 10000; i++) {
ausdruck = new RegExp(type + "=(\\d+)");
if (treffer = ausdruck.exec(s)) {
ersatz = type + "=" + (parseInt(treffer[1]) + 1);
s2 = s.replace(treffer[0], ersatz);
}
}
e = new Date();
diff2 = e.getTime() - a.getTime();
Im Firefox und MSIE ist die zweite Methode bei mir schneller, im Opera deutlich langsamer.
Mathias