A doua actualizare :. În încercarea de a da un răspuns integrat, sunt o evaluare comparativă a celor trei metode propuse în diferitele răspunsuri
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');
Rezultatele rezultatelor în Firefox 3.5.8 în Mac OS X 10.6.2:
10k substring: 16ms10k split: 25ms10k regex: 44ms
Rezultatele din Chrome 5.0.307.11 în Mac OS X 10.6.2:
10k substring: 14ms10k split: 20ms10k regex: 15ms
Rețineți că metoda subcadena este mai mică în funcționalitatea care returnează un lanț gol dacă adresa URL nu conține un șir de interogare. Celelalte două metode ar returna adresa URL completă, așa cum era de așteptat. Cu toate acestea, este interesant de observat că metoda subcadenei este cea mai rapidă, mai ales în Firefox.
Prima actualizare: De fapt, metoda Split () sugerată de robustă este o soluție mai bună decât cea care a sugerat anterior, deoarece va funcționa chiar și atunci când nu există șir de interogare:
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ăspuns original:
var testURL = '/Products/List?SortDirection=dsc&Sort=price&Page=3&Page2=3';testURL.substring(0, testURL.indexOf('?')); // Returns: "/Products/List"