Ho appena creato la mia versione di questo. La mia funzione può essere utilizzata per estrarre tutto ciò che vuoi da esso, se non ti serve tutto, puoi rimuovere facilmente del codice.
<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>
Produrrà quanto segue:
- Il file con il nome "testcase1" ha estensione: "jpeg" si trova nella directory: "C: \ blabla \ blaeobuaeu"
- Il file con il nome "testcase2" ha l'estensione: "png" si trova nella directory: "/ tmp / blabla"
- Il file con il nome "testcase3" ha l'estensione: "htm" si trova nella directory: ""
- La directory con il nome "Testcase4" ha l'estensione: "" si trova nella directory: "C:"
- La directory con il nome "fileWithoutDots" ha l'estensione: "" si trova nella directory: "/dir.with.dots"
- La directory con il nome "ha estensione:" è nella directory: "/dir.with.dots/another.dir"
Con && nOffset+1 === str.length
aggiunto a isDirectory
:
- Il file con il nome "testcase1" ha estensione: "jpeg" si trova nella directory: "C: \ blabla \ blaeobuaeu"
- Il file con il nome "testcase2" ha l'estensione: "png" si trova nella directory: "/ tmp / blabla"
- Il file con il nome "testcase3" ha l'estensione: "htm" si trova nella directory: ""
- La directory con il nome "Testcase4" ha l'estensione: "" si trova nella directory: "C:"
- La directory con il nome "fileWithoutDots" ha l'estensione: "" si trova nella directory: "/dir.with.dots"
- La directory con il nome "ha estensione:" è nella directory: "/dir.with.dots/another.dir"
Dati i casi di test, puoi vedere che questa funzione funziona in modo abbastanza robusto rispetto agli altri metodi proposti qui.
Nota per i neofiti sul \\: \ è un carattere di escape, ad esempio \ n indica una nuova riga e una scheda \ ta. Per rendere possibile scrivere \ n, devi effettivamente digitare \\ n.