2. Update: Um eine umfassende Antwort zu geben, vergleiche ich die drei in den verschiedenen Antworten vorgeschlagenen Methoden.
var testURL = '/Products/List?SortDirection=dsc&Sort=price&Page=3&Page2=3';
var i;
// Testing the substring method
i = 0;
console.time('10k substring');
while (i < 10000) {
testURL.substring(0, testURL.indexOf('?'));
i++;
}
console.timeEnd('10k substring');
// Testing the split method
i = 0;
console.time('10k split');
while (i < 10000) {
testURL.split('?')[0];
i++;
}
console.timeEnd('10k split');
// Testing the RegEx method
i = 0;
var re = new RegExp("[^?]+");
console.time('10k regex');
while (i < 10000) {
testURL.match(re)[0];
i++;
}
console.timeEnd('10k regex');
Ergebnisse in Firefox 3.5.8 unter Mac OS X 10.6.2:
10k substring: 16ms
10k split: 25ms
10k regex: 44ms
Ergebnisse in Chrome 5.0.307.11 unter Mac OS X 10.6.2:
10k substring: 14ms
10k split: 20ms
10k regex: 15ms
Beachten Sie, dass die Teilstring-Methode eine schlechtere Funktionalität aufweist, da sie eine leere Zeichenfolge zurückgibt, wenn die URL keinen Querystring enthält. Die beiden anderen Methoden würden erwartungsgemäß die vollständige URL zurückgeben. Es ist jedoch interessant festzustellen, dass die Teilzeichenfolgenmethode die schnellste ist, insbesondere in Firefox.
1. UPDATE: Tatsächlich ist die von Robusto vorgeschlagene split () -Methode eine bessere Lösung als die zuvor vorgeschlagene, da sie auch dann funktioniert, wenn kein Querystring vorhanden ist:
var testURL = '/Products/List?SortDirection=dsc&Sort=price&Page=3&Page2=3';
testURL.split('?')[0]; // Returns: "/Products/List"
var testURL2 = '/Products/List';
testURL2.split('?')[0]; // Returns: "/Products/List"
Ursprüngliche Antwort:
var testURL = '/Products/List?SortDirection=dsc&Sort=price&Page=3&Page2=3';
testURL.substring(0, testURL.indexOf('?')); // Returns: "/Products/List"