目次
- 配列(Array)
- 配列を作る
- 配列からオブジェクトを取り出す
- 配列にオブジェクトを格納する
- 配列の中身
- 配列と大きさ
- 配列と繰り返し
- ハッシュ(Hash)
- ハッシュを作る
- ハッシュからオブジェクトを取り出す
- ハッシュの繰り返し
- 正規表現
- パターンマッチと正規表現
配列について
- 長さ
- array.size
names = ["yasuhisa","onoue","satou30"] names.each {|n| print n,"\n" }
hashについて
- 作り方
font_table = {"nomal" => "+0", "small" => "-1", "big" => "+1"}
- 追加の仕方
font_table["verybig"] = "+2"
- ループの回し方
hash.each {|key,value| do.something(key,value) }
おいらの問題1
- こんな表をhtmlのtableで作ってください
- tableかよ、とか言わないでくだしあ><
- hash使ってやってください
- hashなんで追加した順番はどうでもいいことにします
- 余裕がある人は
- key,value,追加した順番でsortとかやったりしてみるといい練習になるんじゃないかな…!!
- もちろん、2章までには出てきてないと思うので、ググったり、レシピブック見るなりしてください
- Perlクックブック見たくなってきた<俺
yasuhisa | syou6162 |
kondo | jkondo |
hirose30 | rosese |
おいらの回答
print "<html><title>hatena id</title>" print "<body>\n" hatena_id = {"yasuhisa" => "syou6162", "kondo" => "jkondo", "hirose30" => "rosese"} print "<table>\n" hatena_id.each {|key, value| print "<tr>\n<td>",key,"</td><td>",value,"</td>\n</tr>\n" } print "</table>" print "</body></html>\n"
おいらの問題2
- 簡単なの
- こんなhashがあったとします
names = {"吉田" => "康久", "近藤" => "淳也", "伊藤" => "直也"}
- keyに「田」を含む人のみをフルネームで出力してください
おいらの回答
names = {"吉田" => "康久", "近藤" => "淳也", "伊藤" => "直也"} names.each {|key, value| if /田/ =~ key print key,value,"\n" end }
id:InoHiroの問題
livedoor のWebサービスから土浦の天気を引っ張ってくるー
feed://weather.livedoor.com/forecast/rss/8/55.xml
おいらの問題1
- 昨日やったしね
require 'rss' require 'iconv' rss = RSS::Parser.parse('http://weather.livedoor.com/forecast/rss/8/55.xml') rss.items.each{|item| puts Iconv::iconv('euc-jp','UTF-8',item.description.to_s) }
おいらの問題2
- 上のだけじゃつまらないので、見栄えよくしてみた
- 画像のURL引っぱってこようと思ったけど、validじゃないところだったので、Ruby附属のRSSでは取ってこれない。。。
- ということで、昨日使ったhpricotをxmlに対して使ってみた
- ハッシュを配列にぶちこんであって、2章まででは出てこない
- でも、まあいいか
require 'rubygems' require 'hpricot' require 'open-uri' require 'iconv' require 'pp' url = 'http://weather.livedoor.com/forecast/rss/8/55.xml' doc = Hpricot( open(url).read ) yosou = [] (doc/:item).each {|item| forecast = {} title = item/:title forecast["天気"] = Iconv::iconv('euc-jp','UTF-8',title[1].inner_text) url = item/:url forecast["image"] = Iconv::iconv('euc-jp','UTF-8',url.inner_text) description = item/:description forecast["説明"] = Iconv::iconv('euc-jp','UTF-8',description.inner_text) yosou.push(forecast) } print "<html><title>天気予報</title>" print "<body>\n" print "<table>\n" yosou[1..yosou.size].each {|day| print "<tr>\n<td><img src=\"",day['image'],"\" /></td>\n<td>",day['天気'],"</td>\n<td>",day['説明'],"</td>\n</tr>\n" } print "</table>" print "</body></html>\n"
こんな感じで出力できた。
追記
@_tad_さんにいろいろ教えてもらったんだけど、それに関するメモを書くのを忘れていた。が、id:InoHiroが完璧にメモを取ってくれていたようだ。「***.methods」とかは参考になる。