2n Actualització :. En un intent de donar una resposta integral, estic avaluació comparativa dels tres mètodes proposats en les diferents respostes
var testURL = '/Products/List?SortDirection=dsc&Sort=price&Page=3&Page2=3';var i;// Testing the substring methodi = 0;console.time('10k substring');while (i < 10000) { testURL.substring(0, testURL.indexOf('?')); i++;}console.timeEnd('10k substring');// Testing the split methodi = 0;console.time('10k split');while (i < 10000) { testURL.split('?'); i++;}console.timeEnd('10k split');// Testing the RegEx methodi = 0;var re = new RegExp("+");console.time('10k regex');while (i < 10000) { testURL.match(re); i++;}console.timeEnd('10k regex');
Els resultats a Firefox 3.5.8 en Mac OS X 10.6.2:
10k substring: 16ms10k split: 25ms10k regex: 44ms
Els resultats en Chrome 5.0.307.11 en Mac OS X 10.6.2:
10k substring: 14ms10k split: 20ms10k regex: 15ms
Tingueu en compte que el mètode subcadena és inferior a la funcionalitat que retorna una cadena en blanc si la URL no conté una cadena de consulta. Els altres dos mètodes tornarien la URL, com s’esperava. No obstant això, és interessant observar que el mètode subcadena és el més ràpid, especialment en Firefox.
primer ACTUALITZACIÓ: En realitat, el mètode split () va suggerir per Robust és una solució millor que la que va suggerir anteriorment, ja que funcionarà fins i tot quan no hi ha una cadena de consulta:
var testURL = '/Products/List?SortDirection=dsc&Sort=price&Page=3&Page2=3';testURL.split('?'); // Returns: "/Products/List"var testURL2 = '/Products/List';testURL2.split('?'); // Returns: "/Products/List"
resposta original:
var testURL = '/Products/List?SortDirection=dsc&Sort=price&Page=3&Page2=3';testURL.substring(0, testURL.indexOf('?')); // Returns: "/Products/List"