Tôi chỉ tạo phiên bản của riêng tôi về điều này. Hàm của tôi có thể được sử dụng để trích xuất bất cứ thứ gì bạn muốn từ nó, nếu bạn không cần tất cả, thì bạn có thể dễ dàng xóa một số mã.
<html>
<body>
<script type="text/javascript">
// Useful function to separate path name and extension from full path string
function pathToFile(str)
{
var nOffset = Math.max(0, Math.max(str.lastIndexOf('\\'), str.lastIndexOf('/')));
var eOffset = str.lastIndexOf('.');
if(eOffset < 0 && eOffset < nOffset)
{
eOffset = str.length;
}
return {isDirectory: eOffset === str.length, // Optionally: && nOffset+1 === str.length if trailing slash means dir, and otherwise always file
path: str.substring(0, nOffset),
name: str.substring(nOffset > 0 ? nOffset + 1 : nOffset, eOffset),
extension: str.substring(eOffset > 0 ? eOffset + 1 : eOffset, str.length)};
}
// Testing the function
var testcases = [
"C:\\blabla\\blaeobuaeu\\testcase1.jpeg",
"/tmp/blabla/testcase2.png",
"testcase3.htm",
"C:\\Testcase4", "/dir.with.dots/fileWithoutDots",
"/dir.with.dots/another.dir/"
];
for(var i=0;i<testcases.length;i++)
{
var file = pathToFile(testcases[i]);
document.write("- " + (file.isDirectory ? "Directory" : "File") + " with name '" + file.name + "' has extension: '" + file.extension + "' is in directory: '" + file.path + "'<br />");
}
</script>
</body>
</html>
Sẽ xuất như sau:
- Tệp có tên 'testcase1' có phần mở rộng: 'jpeg' nằm trong thư mục: 'C: \ blabla \ blaeobuaeu'
- Tệp có tên 'testcase2' có phần mở rộng: 'png' nằm trong thư mục: '/ tmp / blabla'
- Tệp có tên 'testcase3' có phần mở rộng: 'htm' nằm trong thư mục: ''
- Thư mục có tên 'Testcase4' có phần mở rộng: '' nằm trong thư mục: 'C:'
- Thư mục có tên 'fileWithoutDots' có phần mở rộng: '' nằm trong thư mục: '/dir.with.dots'
- Thư mục có tên '' có phần mở rộng: '' nằm trong thư mục: '/dir.with.dots/aosystem.dir'
Với && nOffset+1 === str.length
được thêm vào isDirectory
:
- Tệp có tên 'testcase1' có phần mở rộng: 'jpeg' nằm trong thư mục: 'C: \ blabla \ blaeobuaeu'
- Tệp có tên 'testcase2' có phần mở rộng: 'png' nằm trong thư mục: '/ tmp / blabla'
- Tệp có tên 'testcase3' có phần mở rộng: 'htm' nằm trong thư mục: ''
- Thư mục có tên 'Testcase4' có phần mở rộng: '' nằm trong thư mục: 'C:'
- Thư mục có tên 'fileWithoutDots' có phần mở rộng: '' nằm trong thư mục: '/dir.with.dots'
- Thư mục có tên '' có phần mở rộng: '' nằm trong thư mục: '/dir.with.dots/aosystem.dir'
Với các tủ thử, bạn có thể thấy chức năng này hoạt động khá mạnh mẽ so với các phương pháp được đề xuất khác ở đây.
Lưu ý cho người mới về \\: \ là một ký tự thoát, ví dụ \ n có nghĩa là một dòng mới và tab \ ta. Để có thể viết \ n, bạn phải thực sự nhập \\ n.