1. File_split3.rb ファイル

File_split3.rb ファイルは File::split3 メソッドを提供する。

File::split3 メソッドは path を受け取って dir、name、extの３個の部分に分割した配列を返す。

1. File#split との違い

Ruby 標準の File::split に似ているが、下記の点で微妙に異なる。

File::split（1.6.x）は「\」に対応していなかったが、File::split3では常に「/」に変換する。
File::split（1.6.x）はディレクトリが見当たらない場合には「.」を返すが、File::split3では「""」を返す。
File::split（1.6.x）はディレクトリの最後の「/」を削除するが、File::split3では「/」を付けたまま返す。

これに対して File::split3 では、要するに、単純に文字列のパターンを形式的に判断して分割する。

--ruby
require "File_split3"

#-- ディレクトリの最後の「/」は残して返す。

p File.split3("G:/HTM/index.html")     #=> ["G:/HTM/", "index", ".html"]
p File.split( "G:/HTM/index.html")     #=> ["G:/HTM",  "index.html"]

#-- ディレクトリがない場合には「""」を返す。

p File.split3("index.html")            #=> ["",  "index", ".html"]
p File.split( "index.html")            #=> [".", "index.html"]

#-- 「/」で終わっていればディレクトリとみなす。

p File.split3("G:/HTM/")               #=> ["G:/HTM/", "", ""]
p File.split( "G:/HTM/")               #=> ["G:/HTM", ""] # ver 1.6.x
p File.split( "G:/HTM/")               #=> ["G:", "HTM"]  # ver 1.8.x

#-- 以上を除けば File::split と同じ。

#-- 「.」が含まれていなければ「""」を拡張子として返す。
#-- 「.」で終わっていれば「.」を拡張子として返す。
#-- 「.」が２個以上ある場合には最後の「.」より後を拡張子として返す。

p File.split3("G:/HTM/index")          #=> ["G:/HTM/", "index", ""]
p File.split3("G:/HTM/index.")         #=> ["G:/HTM/", "index", "."]
p File.split3("G:/HTM/index.html.bak") #=> ["G:/HTM/", "index.html", ".bak"]

#-- 「*」などの記号でも可。

p File.split3("G:/HTM/*.html")         #=> ["G:/HTM/", "*", ".html"]
p File.split3("G:/HTM/*.")             #=> ["G:/HTM/", "*", "."]
--

1. File::split3 メソッド

: split3(path)

path を受け取って [ dir , basename , ext ] の配列を返す。

1. その他

1.1. 必要なライブラリ

File_unix.rb

File#split3 は内部的に "\" デリミッタに対応します。

1. 関連ファイル

→G:/DELPHI/TKUTILS/TkUtils.pas[tkFSplit]
→G:/Apollo/TkUtils/File_merge_path.rb
→G:/Apollo/TkUtils/File_merge_path.pi


