получение расширения файла из строки
Допустим есть строка: some-file-name.mov или some-another-file.some.jpeg
Сейчас я для того чтобы получить расширение файла, использую такой код:
const type = 'video/' + file.title
.split('')
.reverse()
.join('')
.split('.')[0]
.split('')
.reverse()
.join('');
//mov
//jpeg
Как заменить код более лаконичным выражением, например используя регулярное выражение?
Ответы (3 шт):
Автор решения: Leonid
→ Ссылка
Можно гораздо короче: file_name.split('.').reverse()[0].
let str1 = 'smomlsdf.jpg';
let str2 = 'sdlfjsng.mov';
function getExtension(file_name){
return file_name.split('.').reverse()[0];
}
console.log(getExtension(str1));
console.log(getExtension(str2));
Если через регулярные, то: file_name.match(/\.([a-zA-Z]+)$/)[1].
let str1 = 'sdfl.s.momlsdf.jpg';
let str2 = 'sdlfjsng.mov';
function getExtension(file_name){
return file_name.match(/\.([a-zA-Z]+)$/)[1];
}
console.log(getExtension(str1));
console.log(getExtension(str2));
Автор решения: Qwertiy
→ Ссылка
function ext(name) {
var m = name.match(/\.([^.]+)$/)
return m && m[1]
}
console.log(ext("some-file-name.mov"))
console.log(ext("some-another-file.some.jpeg"))
console.log(ext("nothing"))
Если хочется в одну строчку, то можно так:
function ext(name) {
return name.match(/\.([^.]+)$|$/)[1]
}
console.log(ext("some-file-name.mov"))
console.log(ext("some-another-file.some.jpeg"))
console.log(ext("nothing"))
или, если позволяет поддержка современного js:
function ext(name) {
return name.match(/\.([^.]+)$/)?.[1]
}
console.log(ext("some-file-name.mov"))
console.log(ext("some-another-file.some.jpeg"))
console.log(ext("nothing"))
Автор решения: Александр Бахурцев
→ Ссылка
'file.js'.match(/\.([a-z]+)/g).at(-1); // .js
'my.file.js'.match(/\.([a-z]+)/g).at(-1); // .js
'this.is.my.file.js'.match(/\.([a-z]+)/g).at(-1); // .js