2e mise à jour :. Dans une tentative de réponse intégrale, je suis une évaluation comparative des trois méthodes proposées dans les différentes réponses
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');
Les résultats de Firefox 3.5.8 Mac OS X 10.6.2:
10k substring: 16ms10k split: 25ms10k regex: 44ms
Les résultats en Chrome 5.0.307.11 dans Mac OS X 10.6.2:
10k substring: 14ms10k split: 20ms10k regex: 15ms
Notez que la méthode Subcadena est plus faible dans la fonctionnalité qui renvoie une chaîne vierge si l’URL ne contient pas de chaîne de requête. Les deux autres méthodes renvoient l’URL complète, comme prévu. Cependant, il est intéressant de noter que la méthode de sous-formation est le plus rapide, surtout en Firefox.
Première mise à jour: En réalité, la méthode Split () suggérée par robuste est une meilleure solution que celle suggérée précédemment, car elle fonctionnera même lorsqu’il n’y a pas de chaîne de requête:
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"
Réponse originale:
var testURL = '/Products/List?SortDirection=dsc&Sort=price&Page=3&Page2=3';testURL.substring(0, testURL.indexOf('?')); // Returns: "/Products/List"