Я только что сделал свою версию этого. Моя функция может быть использована для извлечения из нее всего, что вы хотите, если вам не нужно все это, вы можете легко удалить некоторый код.
<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>
Будет выведено следующее:
- Файл с именем 'testcase1' имеет расширение: 'jpeg' находится в каталоге: 'C: \ blabla \ blaeobuaeu'
- Файл с именем 'testcase2' имеет расширение: 'png' находится в каталоге: '/ tmp / blabla'
- Файл с именем 'testcase3' имеет расширение: 'htm' находится в каталоге: ''
- Каталог с именем Testcase4 имеет расширение: '' находится в каталоге: 'C:'
- Каталог с именем 'fileWithoutDots' имеет расширение: '' находится в каталоге: '/dir.with.dots'
- Каталог с именем '' имеет расширение: '' находится в каталоге: '/dir.with.dots/another.dir'
С && nOffset+1 === str.length
добавлением isDirectory
:
- Файл с именем 'testcase1' имеет расширение: 'jpeg' находится в каталоге: 'C: \ blabla \ blaeobuaeu'
- Файл с именем 'testcase2' имеет расширение: 'png' находится в каталоге: '/ tmp / blabla'
- Файл с именем 'testcase3' имеет расширение: 'htm' находится в каталоге: ''
- Каталог с именем Testcase4 имеет расширение: '' находится в каталоге: 'C:'
- Каталог с именем 'fileWithoutDots' имеет расширение: '' находится в каталоге: '/dir.with.dots'
- Каталог с именем '' имеет расширение: '' находится в каталоге: '/dir.with.dots/another.dir'
Учитывая тестовые примеры, вы можете видеть, что эта функция работает довольно надежно по сравнению с другими предлагаемыми здесь методами.
Примечание для новичков о том, что \\: \ - это escape-символ, например, \ n означает новую строку и вкладку \ ta. Чтобы можно было писать \ n, вы должны набрать \\ n.