Create  Edit  Diff  Phillro Industries  Index  Search  Changes  History  Source  RSS  Note  wikifarm  Login

$(apollo)/lib/File_split3.rb

$(apollo)/lib/File_split3.rb ファイル

File.split3 メソッドを定義する。

依存ライブラリ:

$(apollo)/lib/File_unix.rb? .. File.split3 は内部的に "\" デリミッタに対応します。

File.split3 メソッド

File.split3( path )

path 文字列をディレクトリ部分(dir)、ファイル名部分(name)と拡張子部分(ext)とに分解して文字列の配列を返す。

ruby 標準の 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 では、要するに、単純に文字列のパターンを形式的に判断して分割する。

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

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"]

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

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

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

require "File_split3"
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 と同じ。

  1. -- 「.」が含まれていなければ「""」を拡張子として返す。
  2. -- 「.」で終わっていれば「.」を拡張子として返す。
  3. -- 「.」が2個以上ある場合には最後の「.」より後を拡張子として返す。
require "File_split3"
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"]

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

require "File_split3"
p File.split3("G:/HTM/*.html")         #=> ["G:/HTM/", "*", ".html"]
p File.split3("G:/HTM/*.")             #=> ["G:/HTM/", "*", "."]
Last modified:2004/11/10 16:43:38
Keyword(s):
References:[$(apollo)/lib/File_merge_path.rb] [$(apollo)/lib/File_split3.rb]