質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

1833閲覧

多次元配列について(その2)

probaseball

総合スコア113

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2015/05/15 06:15

編集2015/05/15 08:59

CSVを読み込んで2次元配列に読み込んだ内容を保存したのですが、箇所によってnilが存在し、そのnilを' 'にしたいのですが、どうしたらいいのでしょうか、知恵をお貸しください
befor
["ID","PASS","NAME","OLD"]
["001","001","DELL","21"]
["002","002","LENOVO","nil"]

affter
["ID","PASS","NAME","OLD"]
["001","001","DELL","21"]
["002","002","LENOVO"," "]

できれば、NAMEの部分を中央そろえしたいと思っています。
それはできるのですか?できるのであればそれも教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

BeforeとAfterでデータ自体が化けてしまっていますが、それは置いておきまして。

lang

1arr.map{|inner_arr| inner_arr.map{|s| s || ' '}}

とうれば、二次元配列中のnilをスペースに変換できます。あと、String#centerというメソッドもあります。

投稿2015/05/15 07:57

maisumakun

総合スコア145062

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

probaseball

2015/05/15 08:58

ご指摘ありがとうございます。 変更させていただきました
guest

0

ベストアンサー

lang

1# coding: utf-8 2 3# 2 次元配列を表示する。 4def putArray2(array) 5 puts "[\n" 6 array.each do |v| 7 puts ' [' + v.map { |x| "'#{x}'" }.join(', ') + ']' 8 end 9 puts "]\n" 10end 11 12array = [ 13 ['ID', 'PASS', 'NAME', 'OLD'], 14 ['001', '001', 'DELL', '21'], 15 ['002', '002', 'LENOVO', 'nil'] 16] 17 18array2 = array.map { |v| v.map { |item| item == 'nil' ? '' : item } } 19 20puts '#--- before' 21array.each { |v| p v } 22puts 23 24puts '#--- after' 25array2.each { |v| p v } 26puts 27 28puts '#--- 3 番目の列を幅 6 でセンタリングする' 29array3 = array2.map.with_index { |v| 30 v.map.with_index { |item, index| 31 (index == 2) ? item.center(6) : item 32 } 33} 34putArray2(array3)

実行例:

#--- before ["ID", "PASS", "NAME", "OLD"] ["001", "001", "DELL", "21"] ["002", "002", "LENOVO", "nil"] #--- after ["ID", "PASS", "NAME", "OLD"] ["001", "001", "DELL", "21"] ["002", "002", "LENOVO", ""] #--- 3 番目の列を幅 6 でセンタリングする [ ['ID', 'PASS', ' NAME ', 'OLD'] ['001', '001', ' DELL ', '21'] ['002', '002', 'LENOVO', ''] ]

投稿2015/05/15 13:45

katoy

総合スコア22322

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問