かもメモ

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

JavaScript ファイル名 (文字列) から拡張子を取得したい

拡張子を含むファイル名の文字列から、拡張子とか拡張子を除いたファイル名を取得する方法のメモ

拡張子の始まりの位置を特定すれば拡張子とファイル名に分解できる

拡張子とは何かを考える

  • 拡張子は . から始まる
  • 文字列の一番最後に出現する . 以降が拡張子
  • 文字列の一番最後に出現する . 以前がファイル名

文字列に含まれる最後の . の位置を取得して、その前後で分解する

// 文字列中の最後の `.` の位置を取得
const extensionIndex = fileNameStr.lastIndexOf('.');
const hasExtension = extensionIndex > 0 && extensionIndex < fileNameStr.length - 1;
// `.` 以降が拡張子
const extension = hasExtension ? fileNameStr.substr(extensionIndex) | undefined;
// '.' 以前がファイル名
const fileName =  hasExtension ? fileNameStr.substr(0, extensionIndex) : fileNameStr;
  • 文字列中に . が存在しない場合は、拡張子なし・全てファイル名と判断する
  • 最後の . が文字列の先頭にある場合は、拡張子なし・全てファイル名と判断する
  • 最後の . が文字列の最後にある場合は、拡張子なし・全てファイル名と判断する

Sample

See the Pen Untitled by KIKIKI (@kikiki_kiki) on CodePen.

? パラメーターが存在する場合、パラメーターと拡張子とファイル名に分解してみるサンプル

厳格にはダメかもだけど、入力値が絞れるような場合はこんな感じで拡張子とファイル名とが取得できそう


[参考]