如何从路径中提取文件名?

时间:2018-07-19 16:43:39

标签: javascript regex

我要从中提取文件名的路径采用以下形式:

C:\Folder1\Folder2\Folder3\Folder4\Folder5\x.png

这应该给x(我不需要扩展名)。该文件始终是PNG文件。 x可以是1、2、3或4位数字,但不能包含任何其他字符(只能是数字)。

我尝试了一种“手动”方法,效果很好。

function getId(x) {
  x = x.slice(0,-4);
  var str = "";
  var flag = 0;
  for(var i = x.length - 1; i >= 0; i--) {
    if(!isNaN(x[i])) {
      str = x[i] + str;
      flag = 1;
    } else if(flag == 1) {
      break;
    }
  }
  console.log(str);
}

有没有不使用库的简单方法吗?

3 个答案:

答案 0 :(得分:3)

您可以在一个捕获组中匹配一个或多个数字。然后使用否定的character class将一个点而不是反斜杠匹配一次或多次,并声明字符串的结尾。

(\d+)\.[^\\]+$

const regex = /(\d+)\.[^\\]+$/;
const str = "C:\\Folder1\\Folder2\\Folder3\\Folder4\\Folder5\\1.png";
console.log(str.match(regex)[1]);

答案 1 :(得分:2)

您可以使用split()pop()获取不带扩展名的文件名:

var file = 'C:\\Folder1\\Folder2\\Folder3\\Folder4\\Folder5\\x.png';
var fileName = file.split(/\\/).pop();
fileName = fileName.split('.')[0];
console.log(fileName);

答案 2 :(得分:0)

不是最好的方法,但是很简单:

const str = 'C:\\Folder1\\Folder2\\Folder3\\Folder4\\Folder5\\t.png';
const getId = path => path.split('\\').pop().split('.')[0];
console.log(getId(str));