Nếu bạn phải xử lý một biến chứa đường dẫn đầy đủ (ví dụ thePath = "http://stackoverflow.com/directory/subdirectory/filename.jpg"
:) và bạn muốn trả về chỉ "tên tệp", bạn có thể sử dụng:
theName = thePath.split("/").slice(-1).join().split(".").shift();
kết quả sẽ là theName == "tên tệp" ;
Để thử, hãy viết lệnh sau vào cửa sổ giao diện điều khiển trình gỡ lỗi chrome của bạn:
window.location.pathname.split("/").slice(-1).join().split(".").shift()
Nếu bạn phải xử lý chỉ tên tệp và phần mở rộng của nó (ví dụ theNameWithExt = "filename.jpg"
:):
theName = theNameWithExt.split(".").shift();
kết quả sẽ là theName == "tên tệp" , giống như trên;
Ghi chú:
- Đầu tiên là một chút chậm hơn nguyên nhân thực hiện nhiều hoạt động hơn; nhưng hoạt động trong cả hai trường hợp, nói cách khác, nó có thể trích xuất tên tệp mà không cần mở rộng từ một chuỗi đã cho có chứa đường dẫn hoặc tên tệp với ex. Trong khi biến thứ hai chỉ hoạt động nếu biến đã cho chứa tên tệp có ext như filename.ext nhưng nhanh hơn một chút.
- Cả hai giải pháp đều hoạt động cho cả tệp cục bộ và tệp máy chủ;
Nhưng tôi không thể nói gì về việc so sánh hiệu suất với các câu trả lời khác cũng như khả năng tương thích của trình duyệt hoặc hệ điều hành.
đoạn trích làm việc 1: đường dẫn hoàn chỉnh
var thePath = "http://stackoverflow.com/directory/subdirectory/filename.jpg";
theName = thePath.split("/").slice(-1).join().split(".").shift();
alert(theName);
đoạn trích làm việc 2: tên tệp có phần mở rộng
var theNameWithExt = "filename.jpg";
theName = theNameWithExt.split("/").slice(-1).join().split(".").shift();
alert(theName);
đoạn trích làm việc 2: tên tệp có phần mở rộng gấp đôi
var theNameWithExt = "filename.tar.gz";
theName = theNameWithExt.split("/").slice(-1).join().split(".").shift();
alert(theName);