Elia Weiss
Elia Weiss

Reputation: 10020

Extract filename and extension in js

Need a method in JavaScript to extract a filename and extension.

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

returns array: ["tranzila_2018-01-09_08-58-47","json"]

Upvotes: 5

Views: 13931

Answers (5)

Maidiries
Maidiries

Reputation: 169

In Node.js

var path = require('path');

function getFilenameAndExtension(pathfilename){
    return [path.parse(pathfilename).name, path.parse(pathfilename).ext];
}

In JavaScript

function getFilenameAndExtension(pathfilename){

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

}

Result

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"]

It works too if the filename have more than one ".". For example:

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

Upvotes: 11

Chandan Paranjape
Chandan Paranjape

Reputation: 33

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

var filename=filepath.split("")[filepath.length-1];

var extension=filename.split(".")[filename.length-1];

Upvotes: 0

RomanPerekhrest
RomanPerekhrest

Reputation: 92894

Short String.prototype.match() solution:

var filepath = '/vagrant/modules/americabuy/tranzilaNotifications/class/../../../a_tranzila/log/tranzila_2018-01-09_08-58-47.json',
    result = (m = filepath.match(/([^/]+)\.([^.]+)$/)) && m.slice(1,3);
    
console.log(result);

Upvotes: 0

Amar Pathak
Amar Pathak

Reputation: 130

No need to complex Things. You have a split(" ") method in Javascript that does what you want.

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

var file = str.split('/').pop();
var fileAndExtensionArray = file.split(".");  // This is ["tranzila_2018-01-09_08-58-47","json"]

Upvotes: 0

Zenoo
Zenoo

Reputation: 12880

You can use the split() function combined with pop() to get the file full name (name + extension) and detect the separation between your file name and extension with 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));

Upvotes: 4

Related Questions