last updated:2021/06/03

←前へ 次へ→ 機能別Q&A 質問番号順Q&A


[HMM0015A]

●拡張子の認識

Q.
編集中のファイルの拡張子を調べたいのですが。

A.

大きく分けて、次の 2 つの方法があります。

  1. キーワード filetype を使う。

    filetype キーワードを利用することにより、「.」+拡張子を取得できます。

    なお、「新規」、「grepの結果」、プログラムの標準出力による「実行結果」の場合、各々「new」「grep」「exeresult」という決まった文字列を返します。

    [補足]

    秀丸エディタの起動オプションで、"/c"オプションを指定した場合や、setfiletype文を使った場合は、実ファイルの拡張子と、filetypeで取得できる拡張子が一致しません。これは、設定を強制的に変更している為の仕様になります。 (turukame.3:01568を参照)

    つまり、filetypeキーワードでは、編集しているファイルの拡張子を正確に取得できない場合があるということになります。

    設定の種類を取得したい場合は filetypeキーワードを、実ファイルの確実な拡張子が必要な場合は、 basename 等、ファイル名を取得するキーワードから取得してください。

  2. 文字列から拡張子を取得したい場合
    編集中のファイルでなく、DLL や DDE サーバなどの外部ソフトウェアや、gettext等を利用して、既に取得済みの文字列から拡張子を取得したい場合は、 [HMM0074A]●文字列の後方から文字列を検索 を参照して下さい。 (後方から"."を検索し、そこから拡張子を切り出す)

    その他には以下の方法もあります。

    • hmjre.dll を使用し、正規表現検索を使う。(dllfuncを使う)

      例) 「.+(.[^.]+)」を検索し、タグの位置(括弧内の範囲)を切り出す。

    • COM呼び出し機能を使用し、"Scripting.FileSystemObject"の"GetExtensionName"メソッドを使う。

      "GetExtensionName"メソッドは、filetypeキーワードと違い、"."(ドット)を含まない文字列を返します。また、小文字に正規化はされていないので、注意が必要です。


←前へ 次へ→ 機能別Q&A 質問番号順Q&A