• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:RSS::Parserで取り出した要素と文字列の連結)

RSS::Parserで要素と文字列を連結する方法

このQ&Aのポイント
  • RSS::Parserを使用して取り出した要素と文字列を連結する方法について教えてください。
  • サンプルコードを改造した際にエラーが発生し、要素の連結方法がわからなくなってしまいました。
  • 最終的には要素をHTML形式で連結し、変数に格納したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

Rubyは型(オブジェクトのクラス)に厳しい言語なので、演算子・メソッドにデータを渡すときには型がなんであるかを意識しないといけません。 ライブラリのメソッドが返すオブジェクト型についてはドキュメントに記述があるはずです。もし無い場合は、puts xxxx.class などを挿入してみてクラス名を確認します。 修正点は下記。 rss.items.each do |i|   titles.push(i.title)#pushは配列に要素を加えると言う意味   links.push(i.link)   dates.push(i.date.strftime("%Y/%m/%d")) end

swqplnndc
質問者

お礼

ご回答ありがとうございます! ご指摘の通り修正したらすんなりできました。 初歩的なことで、恐縮です。 puts xxxx.class ↑このメソッドで確認したところ (i.link):String ([i.link]):Array i.date:Time と確認できました! ありがとうございます! 勉強になりました!

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

joinは、StringからなるArrayをつなぎ合わせてStringにするメソッドなので、あなたがしようとしている用途には合いません。 Stringを繋ぎたいみたいなので、+ で良さそうですが。 >【+】にしてみたり色々試してみましたがうまくいきませんでした。 どのように書いてどのようになったのですか?

swqplnndc
質問者

お礼

早速のご回答ありがとうございます! >どのように書いてどのようになったのですか? 以下のようにしてみました。 ------------------------------------------- # -* coding: Shift_JIS -*- ENTRIES = 5 require 'uri' require 'open-uri' require 'rss' uri = URI.parse('http://dtm-web-etc.seesaa.net/index20.rdf') rss = RSS::Parser.parse(uri.read) rss.output_encoding = 'Shift_JIS' titles = [] links = [] dates = []#空の配列を生成 rssdata = "" rss.items.each do |i| titles.push([i.title])#pushは配列に要素を加えると言う意味 links.push([i.link]) dates.push([i.date]) end puts "\n\n" for i in 0...5 rssdata += (dates[i]) + ("<a href='") + (links[i]) + ("'>") + (titles[i]) + ("</a>") + ("\n") end puts "\n\n" puts rssdata ------------------------------------------- エラーメッセージです。 ------------------------------------------- 27:in `+': can't convert String into Array (TypeError) from rss.rb:27 from rss.rb:26:in `each' from rss.rb:26 ------------------------------------------- rdfから取り出したdates[i]などの値は 文字列ではないということでしょうか? 初歩的な質問でお手数をおかけしますが ヒントがありましたら是非お願い致します。

関連するQ&A