0

こんにちは、CSV 形式の食品とレシピのデータベースを読み取り、それをファイルに書き戻す ruby​​ プログラムを作成しています。CSV ファイルに正しく書き込む際に問題が発生しています

オブジェクトの属性を CSV ファイルに書き込みたい

csv_text = CSV.open("FoodDB1.txt","w") do |i|
    @@dataList.each do |j|
        if j.get_type == "b"
            i << [j.name,j.get_type,j.cal]
        elsif j.get_type == "r"
            i << [j.name,j.get_type,j.print_bFood]
        end
    end
end

基本的な食べ物とレシピの 2 種類のオブジェクトがあります。どちらも dataList 配列に格納されます。各オブジェクトのタイプをチェックします。基本的な食べ物であれば、3 つの単純なフィールドだけなので簡単に記述できます。レシピであれば、名前、種類、そのレシピを構成する基本的な食材を書きます。

私が抱えている問題はこの行にあります

i << [j.name,j.get_type,j.print_bFood]

そのため、レシピの名前、タイプ (基本的な食品かレシピか)、そして最後にレシピ内の食品のリストを出力します。それが私が問題を抱えているところです。

bFood は、オブジェクトに格納されている基本的な食品の配列であり、CSV 行に追加するのに問題があります。結合した配列の文字列を.join(",")で返すメソッド(print_bFood)を作ってみたのですが、文字列にコンマが入っているため、CSVでファイルに書き込むと引用符で囲まれてしまいます

"PB&J Sandwich,r,"Jelly,Peanut butter,Bread slice, Bread slice""

こんな感じにしたい

"PB&J Sandwich,r,Jelly,Peanut butter,Bread slice, Bread slice"

何が役立つかについてのアイデア。これを行う方法を探しましたが、もう何も考えられません。

行に追加する機能があれば、bFood 配列を繰り返し処理して、それぞれを行に追加できるという考えがありましたが、それを実行できる機能は見つかりませんでした。

4

1 に答える 1

0

これを正しく読んだら、必要なのは...

i << [j.name, j.get_type, j.bFood].flatten
于 2013-02-01T03:57:06.050 に答える