[英]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.