首页 > 解决方案 > 使用“each do”输出列表,如何跳过最后一个逗号?

问题描述

红宝石初学者:

使用输出列表

each do

当我打印列表时,它会迭代 puts"," 的次数与列表相同,因为,这就是我告诉它要做的事情。我如何告诉它不要最后一次输入逗号/跳过最后一个逗号并输入问号?下面的示例代码:


contacts = {
    "Freddy" => {
    "phone" => 666,
    "tiktok" => "asdf",
    "instagram" => "def",
    "email" => "in.your@dreams"
  }
}
name = "Freddy"

print "We know these things about #{name}:"
    contacts[name].each do |key, value|
        print " #{key}"
        print "," 
    end
    print "?\n" 

期望的输出是:我们知道 Freddy 的这些事情:电话、tictok、instagram、电子邮件?

不是

我们知道关于 Freddy 的这些事情:电话、tictok、instagram、电子邮件?(去掉最后一个逗号)

标签: ruby

解决方案


我倾向于使用字符串插值形成完整的字符串,然后其放入:

puts "We know know these things about %s: %s?" %
  [name, contacts[name].keys.join(', ')]

显示

We know know these things about Freddy: phone, tiktok, instagram, email? 

有关字符串格式化指令,请参见Kernel#sprintf


推荐阅读