在js中提取文件名和扩展名

Eli*_*iss -1 javascript

需要 JavaScript 中的方法来提取文件名和扩展名。

例子: /vagrant/modules/americabuy/tranzilaNotifications/class/../../../a_tranzila/log/tranzila_2018-01-09_08-58-47.json

返回数组: ["tranzila_2018-01-09_08-58-47","json"]

Mai*_*ies 6

在 Node.js 中

var path = require('path');

function getFilenameAndExtension(pathfilename){
    return [path.parse(pathfilename).name, path.parse(pathfilename).ext];
}
Run Code Online (Sandbox Code Playgroud)

在 JavaScript 中

function getFilenameAndExtension(pathfilename){

  var filenameextension = pathfilename.replace(/^.*[\\\/]/, '');
  var filename = filenameextension.substring(0, filenameextension.lastIndexOf('.'));
  var ext = filenameextension.split('.').pop();
  
  return [filename, ext];

}
Run Code Online (Sandbox Code Playgroud)

结果

getFilenameAndExtension("/vagrant/modules/americabuy/tranzilaNotifications/class/../../../a_tranzila/log/tranzila_2018-01-09_08-58-47.json");
//Result -> ["tranzila_2018-01-09_08-58-47", "json"]
Run Code Online (Sandbox Code Playgroud)

如果文件名有多个“.”,它也能工作。例如:

getFilenameAndExtension("../log/tranzila.2018-01-09.08-58-47.json");
// Result: ["tranzila.2018-01-09.08-58-47", "json"]
Run Code Online (Sandbox Code Playgroud)


Zen*_*noo 4

您可以split()结合使用该函数来pop()获取文件全名(名称+扩展名)并使用以下命令检测文件名和扩展名之间的分隔lastIndexOf()

var str = '/vagrant/modules/americabuy/tranzilaNotifications/class/../../../a_tranzila/log/tranzila_2018-01-09_08-58-47.json';

function fileNameAndExt(str){
  var file = str.split('/').pop();
  return [file.substr(0,file.lastIndexOf('.')),file.substr(file.lastIndexOf('.')+1,file.length)]
}

console.log(fileNameAndExt(str));
Run Code Online (Sandbox Code Playgroud)