2 ° aggiornamento: nel tentativo di fornire una risposta completa, sto confrontando i tre metodi proposti nelle varie risposte.
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');
Risultati in Firefox 3.5.8 su Mac OS X 10.6.2:
10k substring: 16ms
10k split: 25ms
10k regex: 44ms
Risultati in Chrome 5.0.307.11 su Mac OS X 10.6.2:
10k substring: 14ms
10k split: 20ms
10k regex: 15ms
Si noti che il metodo di sottostringa ha una funzionalità inferiore poiché restituisce una stringa vuota se l'URL non contiene una stringa di query. Gli altri due metodi restituiscono l'URL completo, come previsto. Tuttavia è interessante notare che il metodo di sottostringa è il più veloce, specialmente in Firefox.
1 ° AGGIORNAMENTO: In realtà il metodo split () suggerito da Robusto è una soluzione migliore di quella che ho suggerito in precedenza, poiché funzionerà anche quando non c'è querystring:
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"
Risposta originale:
var testURL = '/Products/List?SortDirection=dsc&Sort=price&Page=3&Page2=3';
testURL.substring(0, testURL.indexOf('?')); // Returns: "/Products/List"