Saya baru saja membuat versi saya sendiri. Fungsi saya dapat digunakan untuk mengekstrak apa pun yang Anda inginkan darinya, jika Anda tidak membutuhkan semuanya, maka Anda dapat dengan mudah menghapus beberapa kode.
<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>
Akan menampilkan yang berikut:
- File dengan nama 'testcase1' berekstensi: 'jpeg' ada di direktori: 'C: \ blabla \ blaeobuaeu'
- File dengan nama 'testcase2' memiliki ekstensi: 'png' ada di direktori: '/ tmp / blabla'
- File dengan nama 'testcase3' berekstensi: 'htm' ada di direktori: ''
- Direktori dengan nama 'Testcase4' berekstensi: '' ada di direktori: 'C:'
- Direktori dengan nama 'fileWithoutDots' memiliki ekstensi: '' ada di direktori: '/dir.with.dots'
- Direktori dengan nama '' berekstensi: '' ada di direktori: '/dir.with.dots/another.dir'
Dengan && nOffset+1 === str.length
ditambahkan ke isDirectory
:
- File dengan nama 'testcase1' berekstensi: 'jpeg' ada di direktori: 'C: \ blabla \ blaeobuaeu'
- File dengan nama 'testcase2' memiliki ekstensi: 'png' ada di direktori: '/ tmp / blabla'
- File dengan nama 'testcase3' berekstensi: 'htm' ada di direktori: ''
- Direktori dengan nama 'Testcase4' berekstensi: '' ada di direktori: 'C:'
- Direktori dengan nama 'fileWithoutDots' memiliki ekstensi: '' ada di direktori: '/dir.with.dots'
- Direktori dengan nama '' berekstensi: '' ada di direktori: '/dir.with.dots/another.dir'
Mengingat kasus uji, Anda dapat melihat fungsi ini bekerja cukup kuat dibandingkan dengan metode lain yang diusulkan di sini.
Catatan untuk pemula tentang \\: \ adalah karakter pelolosan, misalnya \ n berarti baris baru dan tab \ ta. Untuk memungkinkan penulisan \ n, Anda harus benar-benar mengetik \\ n.