以类似表格式输出哈希值
我需要将哈希输出到表格中。 数据有一个名为students
的数组,其中包含带键"first_name"
, "last_name"
和"grade_level"
哈希值。
这是我的代码。
students = [] # Dummy Inputs. students = [ { "first_name" => "Bob", "last_name" => "Builder", "grade_level" => 4 }, { "first_name" => "Test", "last_name" => "Buida", "grade_level" => 3 }, { "first_name" => "Senior", "last_name" => "June", "grade_level" => 5 }, { "first_name" => "John", "last_name" => "Smith", "grade_level" => 2 }, { "first_name" => "Me", "last_name" => "Developer", "grade_level" => 11 }] ... puts "\n--------------- \n" + "| CLASS ROSTER \n" + "--------------- \n" # Felt lazy to add them individual put puts "First Name Last Name Grade Level\n" students.each do |student| puts "#{student["first_name"]} #{student["last_name"]} #{student["grade_level"]}"
我使用tab来设置列。 有时,它会像下面一样出现故障。
有没有办法让这更好?
人们可能应该在这里使用String#ljust
和String#rjust
helpers。
首先,让我们准备输出:
FIELD_SIZE = 20 roster = students.map do |s| s.values.map do |f| f.to_s.ljust(FIELD_SIZE) # 1 row end.join(' ') # join columns with spaces end.join($/) # join rows with OS-dependent CR/LF titles = ['First Name', 'Last Name', 'Grade Level'].map do |t| t.to_s.ljust(FIELD_SIZE) end.join(' | ') # join with bars
现在你可以打印出来了:
puts titles, roster
这是输出:
First Name | Last Name | Grade Level Bob Builder 4 Test Buida 3 Senior June 5 John Smith 2 Me Developer 11
随意更改连接器和字段大小,看看它是如何工作的。