Ich habe gerade meine eigene Version davon gemacht. Meine Funktion kann verwendet werden, um alles zu extrahieren, was Sie wollen. Wenn Sie nicht alles benötigen, können Sie einfach Code entfernen.
<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>
Gibt Folgendes aus:
- Datei mit dem Namen 'testcase1' hat die Erweiterung: 'jpeg' befindet sich im Verzeichnis: 'C: \ blabla \ blaeobuaeu'
- Datei mit dem Namen 'testcase2' hat die Erweiterung: 'png' befindet sich im Verzeichnis: '/ tmp / blabla'
- Datei mit dem Namen 'testcase3' hat die Erweiterung: 'htm' befindet sich im Verzeichnis: ''
- Verzeichnis mit dem Namen 'Testcase4' hat die Erweiterung: '' befindet sich im Verzeichnis: 'C:'
- Verzeichnis mit dem Namen 'fileWithoutDots' hat die Erweiterung: '' befindet sich im Verzeichnis: '/dir.with.dots'
- Verzeichnis mit dem Namen '' hat die Erweiterung: '' befindet sich im Verzeichnis: '/dir.with.dots/another.dir'
Mit && nOffset+1 === str.length
hinzugefügt zu isDirectory
:
- Datei mit dem Namen 'testcase1' hat die Erweiterung: 'jpeg' befindet sich im Verzeichnis: 'C: \ blabla \ blaeobuaeu'
- Datei mit dem Namen 'testcase2' hat die Erweiterung: 'png' befindet sich im Verzeichnis: '/ tmp / blabla'
- Datei mit dem Namen 'testcase3' hat die Erweiterung: 'htm' befindet sich im Verzeichnis: ''
- Verzeichnis mit dem Namen 'Testcase4' hat die Erweiterung: '' befindet sich im Verzeichnis: 'C:'
- Verzeichnis mit dem Namen 'fileWithoutDots' hat die Erweiterung: '' befindet sich im Verzeichnis: '/dir.with.dots'
- Verzeichnis mit dem Namen '' hat die Erweiterung: '' befindet sich im Verzeichnis: '/dir.with.dots/another.dir'
In Anbetracht der Testfälle können Sie sehen, dass diese Funktion im Vergleich zu den anderen hier vorgeschlagenen Methoden recht robust funktioniert.
Hinweis für Neulinge, dass \\: \ ein Escape-Zeichen ist, z. B. \ n bedeutet eine neue Zeile und eine \ ta-Registerkarte. Um das Schreiben von \ n zu ermöglichen, müssen Sie tatsächlich \\ n eingeben.