2017-05-03 51 views
-2

我有一个哈希这样的:红宝石回报率分裂哈希

hash = {"user:**[email protected]** password:**azerty**"=>1, 
     "user:**[email protected]** password:**qwerty**"=>1} 

我怎么能只提取用户名(电子邮件)和每个元素的密码单独使用它。

最终与拆分方法。例如,如何从第二个:分割字符串?

我想有这样的事情

Username Password 
[email protected] azerty 
[email protected] qwerty 
+0

@EricDuminil没有,**只是用来在这里大胆的**字** – media

回答

1

只是另一种方式来处理这种情况:

hash.keys.to_s.scan(/user:(\[email protected]\w+.\w+)\spassword:(\w+)/) 
#=> [["[email protected]", "azerty"], ["[email protected]", "qwerty"]] 

击穿:

Example

+0

谢谢!简单而高效。也感谢rubular示例 – media

0

考虑下面的代码片段。它会给你一个观点,你会知道,你应该从哪里开始。

h.keys().map {|x| x.split(" ")}.each do |e| 
    puts "#{e.first.split(":").last} #{e.last.split(":").last}" 
end 

# [email protected] azerty 
# [email protected] qwerty 
0
hash.each { |x,y| puts x.split(" ").to_s.gsub("user:", "").to_s.gsub("password:", "") } 
# ["[email protected]", "azerty"] 
# ["[email protected]", "qwerty"] 
+1

虽然这段代码片段是受欢迎的,并可以提供一些帮助,它会[[如果包括一个解释大大改善](//meta.stackexchange.com/q/114762)*如何解决问题。没有这些,你的答案就没有什么教育价值了 - 记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –

0

。利用拆分

hash.each do |key, _val| 
    puts key.split.map { |s| s.split(':').last }.join(' ') 
end