- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

Ruby

はじめに Edit

パスを含むファイル名の拡張子を変更する方法。

(1.9以降)Pathname#sub_extを使う方法 Edit

Pathname#sub_extを使う方法。
Ruby 1.8.7にはないみたいです。

1
2
3
4
require 'pathname'
Pathname("sample.txt").sub_ext(".html").to_s #=> "sample.html"
Pathname("sample.txt").sub_ext(".old.html").to_s #=> "sample.old.html"
Pathname("sample.old.txt").sub_ext(".html").to_s #=> "sample.old.html"

to_sでその場で文字列にしなければ、Pathnameのインスタンスとして使えるので、to_sしない方が取り回しがよいかもですね。

Pathname#subで使って変更する方法 Edit

Pathname#subでsubで正規表現で置換する方法。1.8.7でも使える。
参考:[ruby-list:44608] Pathname で拡張子を変更する

1
2
3
4
require 'pathname'
Pathname("sample.txt").sub(/\.[^.]+$/, ".html").to_s #=> "sample.html"
Pathname("sample.txt").sub(/\.[^.]+$/, ".old.html").to_s #=> "sample.old.html"
Pathname("sample.old.txt").sub(/\.[^.]+$/, ".html").to_s #=> "sample.old.html"

gsubを使う方法 Edit

gsubと正規表現で置換してみた例。

1
2
3
4
5
6
7
def change_ext(filename, ext)
  filename.gsub(/\.[^.]+$/, ext)
end

change_ext("sample.txt", ".html") #=> "sample.html"
change_ext("sample.txt", ".old.html") #=> "sample.old.html"
change_ext("sample.old.txt", ".html") #=> "sample.old.html"

問題ない感じがします
※アルファベット等以外も考慮してみた

参考URL Edit

ファイルの拡張子を変更する (山本隆の開発日誌)


  • gsubの方法の正規表現が微妙にバグってたのを修正(例えばマルチバイトな拡張子を含むとダメポでした) -- TOBY 2009-06-28 (Sun) 14:58:24


Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2011-05-27 Fri 00:13:30 JST (2367d)