繁体   English   中英

如何从具有特殊字符的文件名中提取ext-javascript

[英]How to extract an ext from a filename having special chars in it-javascript

我正在尝试从文件名获取扩展名。 文件名可以包含特殊字符,例如“#,@,。,_,(),.. etc),例如:

var file1 = "fake.der"
var file2 = "fake.1.der"
var file3 = "fake_test.3.der"

现在,在上述情况下,我只想从每个文件名中提取ext“ der”。 我试过了:

file1.split(".")[1] //works fine
file2.split(".")[1] // gives me 1 -incorrect but file2.split(".")[2] gives correct result
file3.split(".")[1] //gives 3-incorrect.

由于文件名可能会有所不同,因此我不希望通过将其他文件名更改为.split(".")[2]来使它成为.split(".")[1]静态。.我该怎么办确保无论文件名中有多少点,我总是以o / p作为扩展名,是否有更好的方法? 谢谢!

使用正则表达式匹配一个点,再跟非点字符,再跟字符串的末尾:

 function getExt(str) { const match = str.match(/\\.([^.]+)$/); if (match) { return match[1]; } else { return 'Not found'; } } var file1 = "fake.der"; var file2 = "fake.1.der"; var file3 = "fake_test.3.der"; var file4 = "foobar"; [file1, file2, file3, file4].forEach(str => console.log(getExt(str))); 

请注意,您不能总是确保输入字符串包含格式正确的文件扩展名,因此请确保按照上述方法处理这些意外情况。

随着lastIndexOf

function getExtension(file) {
  const index = file.lastIndexOf('.');
  return index === -1 ? '' : file.slice(index + 1);
}

如果字符串不包含,这也可以处理这种情况.

您可以在与任何“单词”字符匹配的正则表达式中使用\\w “单词”字符是任何字母或数字或下划线字符。 您应该使用$ ,它从字符串的后面开始

function ext(path) {
  let extension = path.match(/\w+$/)
  return extension ? extension[0].replace(".","") : null;
}

只需使用.split()和一些长度计算:

var file1 = "fake.der";
var file2 = "fake.1.der";
var file3 = "fake_test.3.der";

function getExtension(name) {
    var nameArr = name.split(".");
    var fileExt = nameArr[nameArr.length - 1];
    return fileExt;
}

console.log(getExtension(file1));
console.log(getExtension(file2));
console.log(getExtension(file3));

使用切片;)

 const fileName = "file.name.extension.der"; console.log(fileName.split('.').slice(-1)); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM