【javascript】ファイルパスの分解
どうも。
皆さんは「ファイルパスをディレクトリ(フォルダ)名とファイル名に分解したい」と思った経験ありませんか??
私はあります。というか今日思いました。
そこで正規表現を用いてファイルパスを分解する便利な方法があるのでメモ。
[分解したいファイルパス].match(/^(.*¥/)([^¥/]*)$/)
仕組みをざっくり説明していきます。
「^(.*¥/)」は、文字列の頭から文字列内で最も後ろにある「/」までにマッチします。
最長一致により、階層がどれだけ深くても気にする必要は無いんですね。便利です。
「([^¥/]*)$」では、「/」では無い文字の0回以上の繰り返しから文字列の末尾までにマッチします。
つまり、先程マッチした文字列の一文字後ろから末尾までってことです。
また、これによりファイルパスとして単なるディレクトリが渡されると後半の正規表現パターンには何もマッチしません。何かと使えそうですよね。
そしてこのmatch()の返り値ですが、配列となっています。
詳しいことは書きませんが、返り値をmatch_returnとすると、内容は以下のようになっております。
match_return[0] : マッチした文字列全体
match_return[1] : 1つ目のカッコにマッチした部分(ディレクトリ)
match_return[2] : 2つ目のカッコにマッチした部分(ファイル名)
こうしてディレクトリとファイル名を取得できます。
同じような思いをされている方はぜひ、参考にしていただけると幸いです。
それでは。