かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Node.js ファイル名から拡張子を取得したい

正引き表現や . で区切る方法を考えてたけど path を使えば簡単だった

path.extname(path) で拡張子を取得できる

path.extname で取得できる拡張子は . 始まりの文字列
拡張子が無い場合は空文字列が返される
サーチクエリがある場合は拡張子含まれる

import path from "path";

path.extname('index.html');
// -> '.html'
path.extname('index.coffee.md');
// -> '.md'
path.extname('index.');
// -> '.'
path.extname('index');
// -> ''
path.extname('.index');
// -> ''
path.extname('.index.md');
// -> '.md' 
path.extname('/aikatsu/idol/ichigo.md?foo=bar');
// -> '.md?foo=bar' 

cf. Path | Node.js v21.7.2 Documentation

ファイル名・拡張子を別々に取得したいときは path.parse(path) が便利

path.parse()root, dir (ファイルまでのパス), base (ファイル名 + 拡張子), name (ファイル名), ext (拡張子) のオブジェクトを返す

import path from "path";

path.parse('/home/user/dir/file.txt');
// { root: '/',
//   dir: '/home/user/dir',
//   base: 'file.txt',
//   name: 'file',
//   ext: '.txt' }

const pathData = path.parse('./aikatsu/idol/ichigo.md?foo=bar');
// { root: '',
//   dir: './aikatsu/idol',
//   base: 'ichigo.md?foo=bar',
//   name: 'ichigo',
//   ext: '.md?foo=bar' }

該当するものがない場合は空文字になる

おわり ₍ᐢ..ᐢ₎


[参考]

今年度もアイカツ!