Cập nhật 2: Trong nỗ lực để cung cấp một câu trả lời toàn diện, tôi benchmarking trong ba phương pháp được đề xuất trong các câu trả lời khác nhau.
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');
quả tìm kiếm trong Firefox 3.5.8 trên Mac OS X 10.6.2:
10k substring: 16ms
10k split: 25ms
10k regex: 44ms
Kết quả trong Chrome 5.0.307.11 trên Mac OS X 10.6.2:
10k substring: 14ms
10k split: 20ms
10k regex: 15ms
Note rằng phương thức chuỗi con kém hơn chức năng khi nó trả về một chuỗi trống nếu URL không chứa chuỗi truy vấn. Hai phương thức khác sẽ trả lại URL đầy đủ, như mong đợi. Tuy nhiên, thật thú vị khi lưu ý rằng phương thức chuỗi con là nhanh nhất, đặc biệt là trong Firefox.
1st UPDATE: Thực ra sự chia rẽ() phương pháp suggested by Robusto là một giải pháp tốt hơn mà một trong những Tôi đề nghị trước đó, vì nó sẽ làm việc ngay cả khi không có chuỗi truy vấn:
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"
Câu trả lời gốc:
var testURL = '/Products/List?SortDirection=dsc&Sort=price&Page=3&Page2=3';
testURL.substring(0, testURL.indexOf('?')); // Returns: "/Products/List"
Nguồn
2010-03-29 20:21:08
Bản sao có thể có của [Cách xóa băm từ window.location (URL) bằng JavaScript mà không cần làm mới trang?] (Https://stackoverflow.com/questions/1397329/how-to -remove-the-băm-từ-cửa sổ-vị trí-url-với-javascript-không-trang-r) – PayteR