Как извлечь ext из имени файла, имеющего специальные символы в нем-javascript

1

Я пытаюсь получить расширение из имени файла. Имя файла может содержать специальные символы, "#, @,., _,(),.. и т.д.) Ex:

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(".")[1], меняя его на .split(".")[2] для других имен файлов и т.д. Как я могу Удостоверьтесь, что независимо от того, сколько точек присутствует в имени файла, я всегда получу расширение только как o/p, есть ли лучшая оценка? Спасибо!

Теги:

5 ответов

1

Используйте регулярное выражение для сопоставления с точкой, за которой следуют не точки, за которыми следует конец строки:

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)));

Обратите внимание, что вы не всегда можете быть уверены в том, что входная строка содержит правильно отформатированное расширение файла, поэтому убедитесь, что обработали эти неожиданные случаи, как это было сделано выше.

0

Просто используйте .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));
0

Вы можете использовать \w в регулярном выражении, которое соответствует любому символу "слова". Символ "слово" - это любая буква, цифра или знак подчеркивания. Вы должны использовать $ который начинает маршировать с конца строки

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

Используйте ломтик;)

const fileName = "file.name.extension.der";

console.log(fileName.split('.').slice(-1));
0

С lastIndexOf:

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

Это также обрабатывает случай, если строка не содержит . ,

Ещё вопросы

Сообщество Overcoder
Наверх
Меню