Ruby RoR 拆分哈希
Ruby RoR split a hash
我有这样的散列:
hash = {"user:**xy@xy.com** password:**azerty**"=>1,
"user:**yy@yy.com** password:**qwerty**"=>1}
如何只提取每个元素的用户名(电子邮件)和密码以单独使用。
最终用split方法。例如,如何从第二个 :
中拆分字符串?
我想要这样的东西
Username Password
xy@xy.com azerty
yy@yy.com qwerty
考虑以下代码段。它会给你一个视图,你会知道你应该从哪里开始。
h.keys().map {|x| x.split(" ")}.each do |e|
puts "#{e.first.split(":").last} #{e.last.split(":").last}"
end
# xy@xy.com azerty
# yy@yy.com qwerty
hash.each { |x,y| puts x.split(" ").to_s.gsub("user:", "").to_s.gsub("password:", "") }
# ["xy@xy.com", "azerty"]
# ["yy@yy.com", "qwerty"]
利用 Split
hash.each do |key, _val|
puts key.split.map { |s| s.split(':').last }.join(' ')
end
还有一种方法可以处理这种情况:
hash.keys.to_s.scan(/user:(\w+@\w+.\w+)\spassword:(\w+)/)
#=> [["xy@xy.com", "azerty"], ["yy@yy.com", "qwerty"]]
细分:
hash.keys.to_s
- 哈希中的键数组(因为我们不关心值)转换为字符串 "[\"user:xy@xy.com password:azerty\", \"user:yy@yy.com password:qwerty\"]"
scan(/user:(\w+@\w+.\w+)\spassword:(\w+)/)
- 匹配捕获组的数组
我有这样的散列:
hash = {"user:**xy@xy.com** password:**azerty**"=>1,
"user:**yy@yy.com** password:**qwerty**"=>1}
如何只提取每个元素的用户名(电子邮件)和密码以单独使用。
最终用split方法。例如,如何从第二个 :
中拆分字符串?
我想要这样的东西
Username Password
xy@xy.com azerty
yy@yy.com qwerty
考虑以下代码段。它会给你一个视图,你会知道你应该从哪里开始。
h.keys().map {|x| x.split(" ")}.each do |e|
puts "#{e.first.split(":").last} #{e.last.split(":").last}"
end
# xy@xy.com azerty
# yy@yy.com qwerty
hash.each { |x,y| puts x.split(" ").to_s.gsub("user:", "").to_s.gsub("password:", "") }
# ["xy@xy.com", "azerty"]
# ["yy@yy.com", "qwerty"]
利用 Split
hash.each do |key, _val|
puts key.split.map { |s| s.split(':').last }.join(' ')
end
还有一种方法可以处理这种情况:
hash.keys.to_s.scan(/user:(\w+@\w+.\w+)\spassword:(\w+)/)
#=> [["xy@xy.com", "azerty"], ["yy@yy.com", "qwerty"]]
细分:
hash.keys.to_s
- 哈希中的键数组(因为我们不关心值)转换为字符串"[\"user:xy@xy.com password:azerty\", \"user:yy@yy.com password:qwerty\"]"
scan(/user:(\w+@\w+.\w+)\spassword:(\w+)/)
- 匹配捕获组的数组