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