簡體   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