Ruby字符串如何转换成哈希值?
- 内容介绍
- 文章标签
- 相关推荐
本文共计358个文字,预计阅读时间需要2分钟。
我刚开始学习Ruby!我有以下字符串: Mark Smith, 29。我想将它转换成哈希,看起来像这样: { :name=> Mark, :surname=> Smith, :age=> 29 }。我编写了以下代码,以减少输入:
rubya1=string.scan(/[\w\d]+/).map { |word| word.to_sym=> word }
我刚开始学习 Ruby!我有以下字符串:
"Mark Smith, 29"
我想将它转换为哈希,所以它看起来像这样:
{:name=>"Mark", :surname=>"Smith", :age=>29}
我编写了以下代码,以减少输入:
a1 = string.scan(/\w+|\d+/)
现在我有一个字符串数组.是否有一种优雅的方式将其转换为哈希?我知道我可以做三次这样的迭代:
pers = Hash.new pers[:name] = a1[0] pers[:surname] = a1[1] pers[:age] = a1[2]
但也许有一种方法可以使用.each方法或类似的方法来做到这一点?或者也许可以使用预定义的键(:name,:surname,:age)定义类Person,然后将我的字符串“抛出”到此类的实例中?
是的,你可以这样做,%i(name surname age) .zip(string.scan(/\w+|\d+/)) .to_h # => {:name=>"Mark", :surname=>"Smith", :age=>"29"}
或者,您可以享受Struct的好处,例如:
Person = Struct.new(:name, :surname, :age ) person = Person.new( *string.scan(/\w+|\d+/) ) person.age # => "29" person.name # => "Mark"
本文共计358个文字,预计阅读时间需要2分钟。
我刚开始学习Ruby!我有以下字符串: Mark Smith, 29。我想将它转换成哈希,看起来像这样: { :name=> Mark, :surname=> Smith, :age=> 29 }。我编写了以下代码,以减少输入:
rubya1=string.scan(/[\w\d]+/).map { |word| word.to_sym=> word }
我刚开始学习 Ruby!我有以下字符串:
"Mark Smith, 29"
我想将它转换为哈希,所以它看起来像这样:
{:name=>"Mark", :surname=>"Smith", :age=>29}
我编写了以下代码,以减少输入:
a1 = string.scan(/\w+|\d+/)
现在我有一个字符串数组.是否有一种优雅的方式将其转换为哈希?我知道我可以做三次这样的迭代:
pers = Hash.new pers[:name] = a1[0] pers[:surname] = a1[1] pers[:age] = a1[2]
但也许有一种方法可以使用.each方法或类似的方法来做到这一点?或者也许可以使用预定义的键(:name,:surname,:age)定义类Person,然后将我的字符串“抛出”到此类的实例中?
是的,你可以这样做,%i(name surname age) .zip(string.scan(/\w+|\d+/)) .to_h # => {:name=>"Mark", :surname=>"Smith", :age=>"29"}
或者,您可以享受Struct的好处,例如:
Person = Struct.new(:name, :surname, :age ) person = Person.new( *string.scan(/\w+|\d+/) ) person.age # => "29" person.name # => "Mark"

