২ য় আপডেট: একটি বিস্তৃত উত্তর দেওয়ার প্রয়াসে আমি বিভিন্ন উত্তরে প্রস্তাবিত তিনটি পদ্ধতির বেঞ্চমার্ক করছি।
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
ম্যাক ওএস এক্স 10.6.2 এ ক্রোম 5.0.307.11 এ ফলাফল:
10k substring: 14ms
10k split: 20ms
10k regex: 15ms
দ্রষ্টব্য যে স্ট্রিং পদ্ধতিটি কার্যকারিতা থেকে নিকৃষ্ট, কারণ এটিতে যদি ইউআরএলটিতে কোয়েরিস্ট্রিং না থাকে তবে একটি ফাঁকা স্ট্রিং প্রদান করে। অন্যান্য দুটি পদ্ধতি প্রত্যাশার সাথে সাথে পুরো URL টি ফেরত দেবে। তবে এটি লক্ষ্য করা আকর্ষণীয় যে সাবস্ট্রিং পদ্ধতিটি দ্রুততম, বিশেষত ফায়ারফক্সে।
প্রথম আপডেট: আসলে রোবস্তোর প্রস্তাবিত বিভাজন () পদ্ধতিটি আমার আগে প্রস্তাবিত একটি আরও ভাল সমাধান, যেহেতু কোনও ক্যোরিস্ট্রিং না থাকলেও এটি কাজ করবে:
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"