Pembaruan ke-2: Dalam upaya memberikan jawaban yang komprehensif, saya membuat tolok ukur tiga metode yang diusulkan dalam berbagai jawaban.
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');
Hasil di Firefox 3.5.8 pada Mac OS X 10.6.2:
10k substring: 16ms
10k split: 25ms
10k regex: 44ms
Hasil di Chrome 5.0.307.11 di Mac OS X 10.6.2:
10k substring: 14ms
10k split: 20ms
10k regex: 15ms
Perhatikan bahwa metode substring lebih rendah fungsinya karena mengembalikan string kosong jika URL tidak berisi querystring. Dua metode lainnya akan mengembalikan URL lengkap, seperti yang diharapkan. Namun menarik untuk dicatat bahwa metode substring adalah yang tercepat, terutama di Firefox.
PEMBARUAN 1: Sebenarnya metode split () yang disarankan oleh Robusto adalah solusi yang lebih baik dari yang saya sarankan sebelumnya, karena metode ini akan berfungsi bahkan ketika tidak ada 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"
Jawaban asli:
var testURL = '/Products/List?SortDirection=dsc&Sort=price&Page=3&Page2=3';
testURL.substring(0, testURL.indexOf('?')); // Returns: "/Products/List"