注意: このページは最後に更新されてから
3433 日が経過している記事です。
文章が腐敗している可能性があります。その点を考慮した上で確認ください。
Tips:Ruby
提供: kimoto's wiki
目次
概要
プログラミング言語Rubyを使う上での私的メモ。プログラミングの復習や新規習得の際に、一通り出来ていると安心できる操作について構造化しまとめるためのもの
数値操作
四則演算
1 + 1 2 - 1 2 * 3 4 / 2
文字列操作
連結
"a" + "b"
分割
"a,b,c".split(",")
探索
"aabbbaaaa".grep("bbb")
正規表現
マッチング
"aaa" =~ /^.*$/
マッチングした要素の抽出
if "aiueo <hoge> aiueo" =~ /<(.*?)>/ p Regexp.last_match[1] end
配列操作
連結
[1,2] + [3,4]
追加
[1,2].push(3) [1,2].shift(3)
除去
[1,2,3].unshift [1,2,3].pop
each / map
[1,2,3].each{ |e| p e }
[1,2,3].map{ |e| e }
探索
[1,2,3].find{ |e| e == 2 }
選定と除外
[1,2,3].select{|e| e == 2} [1,2,3].reject{|e| e != 2}
Web
HTML/XMLのパース
require 'rubygems' require 'nokogiri' require 'open-uri' doc = Nokogiri(open("http://hoge.com/test.html").read) doc.search(".test > .klass > #hoge :nth-child(3)) # CSS selector doc.search("/hoge/fuga/piyo") # XPath
エンコーディング
外部エンコーディングと内部エンコーディングをUTF8に設定する
Encoding.default_external = Encoding.default_internal = "UTF-8"
UTF8のバイト列としてInvalidなものを?に置換
data = data.encode("UTF-16BE", "UTF-8", :invalid => :replace, :undef => :replace, :replace => '?').encode('UTF-8')
リフレクション
Object#send
attr_accessorにより生成されるsetter/getterは、末尾に=をつける必要あり
object.hoge = "test"
こんな感じのコードがあったとすれば、object.send("hoge=", "test")で代入可能
options = {:title => 'This is title'} options.each{ |k,v| object.send(k.to_s + "=", v) }