2013-01-22 44 views
18

var t = "\some\route\here"Xóa mọi thứ sau dấu gạch chéo ngược cuối cùng

Tôi cần "\ some \ route" từ đó.

Cảm ơn bạn.

+0

Look đây: http://stackoverflow.com/questions/6764435/jquery-split-after-last-slash –

+2

Nó không thể được thực hiện với jQuery ': P'. –

+0

[MDN - 'String.prototype.lastIndexOf()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf) – KyleMit

Trả lời

40

Bạn cần lastIndexOfsubstr ...

var t = "\\some\\route\\here"; 
t = t.substr(0, t.lastIndexOf("\\")); 
alert(t); 

Ngoài ra, bạn cần phải tăng gấp đôi lên \ chars trong chuỗi khi chúng được sử dụng để thoát ký tự đặc biệt.

Cập nhật Vì đây thường xuyên được chứng minh hữu ích cho người khác, đây là một ví dụ đoạn ...

// the original string 
 
var t = "\\some\\route\\here"; 
 

 
// remove everything after the last backslash 
 
var afterWith = t.substr(0, t.lastIndexOf("\\") + 1); 
 

 
// remove everything after & including the last backslash 
 
var afterWithout = t.substr(0, t.lastIndexOf("\\")); 
 

 
// show the results 
 
console.log("before   : " + t); 
 
console.log("after (with \\) : " + afterWith); 
 
console.log("after (without \\) : " + afterWithout);

+0

Cảm ơn BẠN. Làm thế nào để tôi gấp đôi. Tôi đã thử này t.replace ("\\", "\\\\") nó did't làm việc – INgeek

+1

Bạn chỉ cần làm điều đó khi bạn thiết lập một chuỗi giá trị trực tiếp trong mã, như trong ví dụ trên. Nếu bạn nhận được nó từ một nơi khác (ví dụ, URL) thì đừng lo lắng về nó :) – Archer

+0

t.replace (/ \\/g, "\\\\") không hoạt động tốt – INgeek

5

Như đã nêu trong @ câu trả lời của Archer, bạn cần phải tăng gấp đôi lên trên các dấu gạch chéo ngược. Tôi khuyên bạn nên sử dụng regex thay thế để nhận được chuỗi bạn muốn:

var t = "\\some\\route\\here"; 
t = t.replace(/\\[^\\]+$/,""); 
alert(t); 
+0

Cảm ơn bạn, vẫn không thể tìm cách tăng gấp đôi dấu gạch chéo ngược – INgeek

+0

Bạn cần làm điều đó trong chính chuỗi đó. Trong JavaScript "\" là ký tự thoát, vì vậy "\ k" (ví dụ) được giải quyết là "k". – ic3b3rg

+0

Cảm ơn bạn rất nhiều – INgeek

1

Sử dụng JavaScript bạn có thể dễ dàng đạt được điều này. Xóa mọi thứ sau lần xuất hiện "_" cuối cùng.

var newResult = t.substring(0, t.lastIndexOf("_")); 
+0

isuru, không phải điều này đã được đề cập đến trong các câu trả lời hiện tại chưa? – KyleMit

+0

@KyleMit Bạn có thấy không? Ông đã cập nhật câu trả lời trước đó của mình. – isuru

+0

Để thêm * thậm chí nhiều hơn * thông tin, nhưng ngay cả phiên bản ngày [Jan 22nd, 2013] (https://stackoverflow.com/posts/14462451/revisions) bao gồm 't = t.substr (0, t.lastIndexOf (" \\ "));' giống với câu trả lời của bạn – KyleMit

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