Ruby:如何在字符串插值内的符号上使用 gsub 方法#{}

标签 ruby symbols gsub string-interpolation

我正在尝试遍历哈希,在格式化列表中打印出键和值。我的理解是字符串插值 #{} 会将符号隐式转换为字符串。但是,当我运行下面的代码时(略有缩写):

holiday_hash = {
  :winter => {:new_years => ["Party Hats", "Champagne"]}
}
holiday_hash.each do |key,value|
  value.each do |key, value|
    puts "#{key.gsub("_", " ")}: #{value.join(', ')}"
  end 
end

我收到此错误消息:

NoMethodError: undefined method `gsub' for :new_years:Symbol

谁能解释一下这个问题?在运行 .gsub 之前,我是否需要将 key 显式转换为字符串? (即使用“key.to_str.gsub ...”)。

我预期/期望的输出如下:

New Years: Party Hats, Champagne

最佳答案

你完全有。该散列中的键是一个符号 (:new_years)。您必须首先:

puts "#{key.to_s.gsub("_", " ")}: #{value.join(', ')}"

关于Ruby:如何在字符串插值内的符号上使用 gsub 方法#{},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28386476/

相关文章:

ruby - 从 ruby​​ 代码运行 RSpec 文件

ruby - 什么是符号,我们如何使用它们?

html - 一类 awk html 标签用 gsub 替换 "' ' >"with "''> "

r - 如何用数字对动态字符进行子串化(例如 : $1000, 100 个单位)

jquery - Rails 3.2.1 Jquery 自动完成

ruby-on-rails - Ruby:在字符串中搜索多个搜索词

ruby - RVM - MacPorts 不会通过代理更新

javascript - 获取 ES6 符号的描述

linux - OpenLDAP的libldap和Oracle的occi库之间的冲突

linux - 替换制表符分隔文件linux中封闭字符串中的制表符