ファイル・ディレクトリ関係File, Dir, FileTest, FileUtils, Pathname あたりを使う。 実行ファイルと同じディレクトリのファイルを読む File.dirname(__FILE__) + "/test.txt" ディレクトリを作成。すでにあったりして失敗したらエラー。 Dir::mkdir("/home/take/tmp") ディレクトリ階層を一気に作成 FileUtils.mkdir_p('/usr/local/lib/ruby') または Pathname.new( '/usr/local/lib/ruby' ).mkpath ファイルかディレクトリが存在するか調べる File.exist? 'hoge' または FileTest.exist? 'hoge' 正規表現
例外rescue p $! ## 例外の情報 p $@ ## backtrace 例外を発生させる raise raise "Errorrrrr!" 文字コード変換kconvを使うとお手軽。 #!ruby -Ku require 'kconv' s = "表が怖い噂のソフトキタ━(゚∀゚)━ !!" s_euc = s.toeuc s_sjis = s.tosjis s_utf8 = s.toutf8 s_utf16 = s.toutf16 # EUC-JP で表された 'Hello, るびま!' str_eucjp = "\x48\x65\x6c\x6c\x6f\x2c\x20\xa4\xeb\xa4\xd3\xa4\xde\xa1\xaa" str_shiftjis = str.kconv(Kconv::SJIS, Kconv::EUC) # EUC-JP から Shift_JIS に変換 str_iso2022jp = str.kconv(Kconv::JIS, Kconv::EUC) # EUC-JP から ISO-2022-JP (JIS) に変換 str_utf8 = str.kconv(Kconv::UTF8, Kconv::EUC) # EUC-JP から UTF-8 に変換 str_utf16 = str.kconv(Kconv::UTF16, Kconv::EUC) # EUC-JP から BOM 無し UTF-16BE に変換 参考: その他UnixTime Time.now.to_i # => 1294134318 とか。秒数が返ってくる。ミリ秒ではない。 Time.at(1294134318) # => Timeオブジェクト MD5文字列(16進数を文字列で) require 'digest/md5' p Digest::MD5.hexdigest('abc') #=> '900150983cd24fb0d6963f7d28e17f72' 短めでランダムなID(ハッシュ値)文字列生成。16進数を36進数にする。62進数(0-9a-Z)にすればさらに短くできるけど、36進数までしかto_sできない。 Digest::MD5.hexdigest('hoge').to_i(16).to_s(36) => "dvnlqdltsg0oh7q2bph1oly0u" http://subtech.g.hatena.ne.jp/secondlife/20100224/1267018963 みたいにやれば62進数もいける? idを元に生成する場合はこんな感じ。reverseは値を散らすため。rは一番上の桁が0にならないように。 ## 乱数 + 時間 + ID id = 0 until id time = Time.now until time r = 1 + rand(9) ## 乱数 (r.to_s + time.utc.to_i.to_s.reverse + id.to_s).to_i.to_s(36) end
コマンドライン引数 $ hoge.rb abc p ARGV[0] # ==> 'abc' |
Ruby >