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

标签 javascript arrays

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

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

现在 在上面的例子中,我只想从每个文件名中提取扩展名“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(".")[ 来使其成为静态的 .split(".")[1] 2] 用于其他文件名等.. 我怎样才能确保无论文件名中有多少个点,我总是只能将扩展名作为 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)));

请注意,您无法始终确保输入字符串包含格式正确的文件扩展名,因此请确保处理这些意外情况,就像上面所做的那样。

关于javascript - 如何从文件名中提取具有特殊字符的 ext-javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54119785/

相关文章:

javascript - Highcharts 在 Y 轴上重复相同的标签值

c++ - 在不使用默认构造函数或赋值的情况下在构造函数中初始化数组

java - 如何将字符串与 HashMap 中的键进行比较

javascript - 如何在某些功能后正确重置 angularjs v1 工厂

Javascript - 使用 createElement 调用 js 文件时无法识别函数

javascript - 如何使用 Jasmine 测试表单

javascript - 不区分大小写的 jQuery 属性选择器

javascript - Uib-popover 应显示有限的字符

c - C中的字符串数组

java - 如何将数组与多态性一起使用?