दूसरा अद्यतन: एक व्यापक उत्तर प्रदान करने के प्रयास में, मैं विभिन्न उत्तरों में प्रस्तावित तीन विधियों को बेंचमार्किंग कर रहा हूँ।
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');
मैक ओएस एक्स 10.6.2 पर फ़ायरफ़ॉक्स 3.5.8 में परिणाम:
10k substring: 16ms
10k split: 25ms
10k regex: 44ms
Mac OS X 10.6.2 पर Chrome 5.0.307.11 में परिणाम:
10k substring: 14ms
10k split: 20ms
10k regex: 15ms
ध्यान दें कि सबस्ट्रिंग विधि कार्यक्षमता में हीन है क्योंकि यह एक रिक्त स्ट्रिंग लौटाता है यदि URL में क्वेरिस्ट्रिंग नहीं है। अन्य दो विधियाँ उम्मीद के मुताबिक पूरा URL लौटा देंगी। हालांकि यह ध्यान रखना दिलचस्प है कि प्रतिस्थापन विधि सबसे तेज़ है, खासकर फ़ायरफ़ॉक्स में।
1 अद्यतन: वास्तव में रोबस्टो द्वारा सुझाई गई विभाजन () विधि एक बेहतर समाधान है, जिसे मैंने पहले सुझाया था, क्योंकि यह तब भी काम करेगा जब कोई झंझट न हो।
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"
मूल उत्तर:
var testURL = '/Products/List?SortDirection=dsc&Sort=price&Page=3&Page2=3';
testURL.substring(0, testURL.indexOf('?')); // Returns: "/Products/List"