2012-06-04 36 views
13

tôi cần phải loại bỏ phần cuối cùng của url từ một khoảng ..Hủy bỏ yếu tố cuối cùng từ url

Tôi có

<span st_url="http://localhost:8888/careers/php-web-developer-2" 
st_title="PHP Web Developer 2" class="st_facebook_large" displaytext="facebook" 
st_processed="yes"></span></span> 

Và tôi cần phải thực hiện st_url và loại bỏ các php-web-developer-2 từ nó để nó chỉ là http://localhost:8888/careers/.

Nhưng tôi không chắc chắn cách thực hiện điều đó. php-web-developer-2 sẽ không phải lúc nào cũng như vậy nhưng nó sẽ không có bất kỳ / trong đó. Nó sẽ luôn là một chuỗi riêng biệt -.

Bất kỳ trợ giúp nào !! ??

Trả lời

8
$('span').attr('st_url', function(i, url) { 
    var str = url.substr(url.lastIndexOf('/') + 1) + '$'; 
    return url.replace(new RegExp(str), ''); 
}); 

DEMO

+1

Plz lưu ý rằng giải pháp này không phải là chung chung. Nếu phần cuối cùng của URL của bạn cũng xảy ra ở nơi khác trong URL, điều này sẽ cho kết quả sai; ví dụ. 'http://somewhere.com/test/e' sẽ không thành công. Câu trả lời của Gisway có vẻ tốt hơn. – dotNET

+0

Giải pháp này có lỗi rất lớn vì nếu url là "http: // localhost: 8888/careers1/career", kết quả sẽ là '" http: // localhost: 8888/1/careers "', ''nghề nghiệp' 'bị xóa – jscripter

+0

Bản demo của bạn cần một số công việc vì nó không thể hiện một giải pháp. – mikoop

0

Trước tiên, bạn cần phải phân tích các thẻ. Tiếp theo hãy thử trích xuất giá trị st_url là url của bạn. Sau đó, sử dụng vòng lặp từ ký tự cuối cùng của url được trích xuất và bỏ qua chúng cho đến khi bạn thấy '/'. Đây là cách bạn nên trích xuất những gì bạn muốn. Hãy ghi nhớ điều này và cố gắng viết mã.

2

Bạn có thể thấy nó hoạt động ở đây: http://jsfiddle.net/xKxLR/

var url = "http://localhost:8888/careers/php-web-developer-2"; 
var regex = new RegExp('/[^/]*$'); 
console.log(url.replace(regex, '/')); 
+0

hm ... Tôi đã nghi ngờ về '*' hoặc '+' ... Phiên bản của bạn cho phép đuôi trống "http: // xxx/yyy /", tôi không, cả hai dường như hoạt động (trong tôi, không có thay thế được thực hiện, tôi đoán) – xtofl

2

Bạn có thể sử dụng một biểu thức chính quy để phân tích các 'mảnh cuối cùng của url':

var url="http://localhost:8888/careers/php-web-developer"; 

var baseurl=url.replace(
    new RegExp("(.*/)[^/]+$"), 
    "$1")); 

Các RegExp điều cơ bản nói: " phù hợp với bất cứ điều gì, sau đó một dấu gạch chéo và sau đó tất cả không slashes cho đến cuối chuỗi ".

Hàm thay thế lấy phần khớp đó và thay thế bằng phần "bất kỳ thứ gì, sau đó là dấu gạch chéo" của chuỗi.

RegexBuddy có rất nhiều thông tin về tất cả điều này.

+0

Tôi thích regex. Đây là câu trả lời được chấp nhận – jscripter

9

Sử dụng tính năng này.

$('span').attr('st_url', function(i, url) { 
    var to = url.lastIndexOf('/') +1; 

    x = url.substring(0,to); 
    alert(x); 
})​ 

Bạn có thể thấy Demo

+3

Xóa '+ 1' nếu bạn muốn loại bỏ dấu gạch chéo –

9

đơn giản như này:

var to = url.lastIndexOf('/'); 
to = to == -1 ? url.length : to + 1; 
url = url.substring(0, to); 
+0

Nó hoạt động tốt hơn bởi vì nếu bạn có một số từ khớp với đường dẫn, thay thế sẽ làm việc loại bỏ khớp đầu tiên –

Các vấn đề liên quan