2011-05-11 33 views

Trả lời

17

Để có được mục cuối cùng trong một đường dẫn, bạn có thể chia chuỗi trên / và sau đó pop():

var url = "http://blablab/test"; 
alert(url.split("/").pop()); 
//-> "test" 

Để xác định một bộ phận riêng lẻ của một con đường, chia trên / và sử dụng ký hiệu khung để truy cập mục:

var url = "http://blablab/test/page.php"; 
alert(url.split("/")[3]); 
//-> "test" 

Hoặc, nếu bạn muốn mọi thứ sau dấu gạch chéo thứ ba, split(), slice()join():

var url = "http://blablab/test/page.php"; 
alert(url.split("/").slice(3).join("/")); 
//-> "test/page.php" 
+0

Hãy ghi nhớ nếu có dấu gạch chéo thứ tư, 'pop' này sẽ nhận được mọi thứ sau dấu gạch chéo cuối cùng và' [3] 'sẽ nhận được mọi thứ giữa dấu gạch chéo thứ ba và thứ tư. –

+0

@George: đã lưu ý, cập nhật. –

+1

Cảm ơn tất cả các bạn vì đã trả lời nhanh câu trả lời này đã giúp ích cho câu hỏi ngớ ngẩn của tôi;) – Frank

2
var string = 'http://blablab/test' 
string = string.replace(/[\s\S]*\//,'').replace(/[\s\S]*\//,'').replace(/[\s\S]*\//,'') 
alert(string) 

Đây là cụm từ thông dụng. Tôi sẽ giải thích dưới đây

Các regex là /[\s\S]*\//

/ là sự bắt đầu của regex

đâu [\s\S] nghĩa khoảng trắng hoặc không khoảng trắng (bất cứ điều gì), không nên nhầm lẫn với . mà không phù hợp với ngắt dòng (. giống với [^\r\n]).

* nghĩa là chúng ta phù hợp với bất cứ nơi nào từ số không đến không giới hạn số [\s\S]

\/ phương tiện phù hợp với một nhân vật dấu gạch chéo

cuối cùng / là kết thúc của regex

+1

tạo ra một fiddle để thử nghiệm .. http://jsfiddle.net/DSzJL/ –

+0

3 biểu thức chính quy thay thế có lẽ không phải là cách tiếp cận hiệu quả nhất. –

+0

Tôi biết, tôi thích allex regex nhưng tôi đã upvote các câu trả lời khác biết điều này. –

2
var str = "http://blablab/test"; 
var index = 0; 
for(var i = 0; i < 3; i++){ 
    index = str.indexOf("/",index)+1; 
} 
str = str.substr(index); 

Để làm cho nó một liner bạn có thể làm như sau:

str = str.substr(str.indexOf("/",str.indexOf("/",str.indexOf("/")+1)+1)+1); 
0

Bạn có thể sử dụng split để phân chia các chuỗi trong các bộ phận và sử dụng slice trả lại toàn bộ phần sau slice thứ ba.

var str = "http://blablab/test", 
    arr = str.split("/"); 
arr = arr.slice(3); 
console.log(arr.join("/")); // "test" 

// A longer string: 
var str = "http://blablab/test/test"; // "test/test"; 
0

Bạn có thể sử dụng một biểu thức chính quy như thế này một:

'http://blablab/test'.match(/^(?:[^/]*\/){3}(.*)$/); 
// -> ['http://blablab/test', 'test] 

phương pháp của một chuỗi match cung cấp cho bạn hoặc là một mảng (của toàn bộ trận đấu, trong trường hợp này toàn bộ đầu vào, và của bất kỳ chụp nhóm (và chúng tôi muốn nhóm chụp đầu tiên)), hoặc null.Vì vậy, để sử dụng chung, bạn cần phải rút ra phần tử thứ 1 của mảng hoặc null nếu không tìm thấy kết quả phù hợp:

var input = 'http://blablab/test', 
    re = /^(?:[^/]*\/){3}(.*)$/, 
    match = input.match(re), 
    result = match && match[1]; // With this input, result contains "test" 
Các vấn đề liên quan