Ruby RoR拆分哈希

时间:2017-05-03 12:17:49

标签: ruby string split ruby-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

4 个答案:

答案 0 :(得分:1)

处理这种情况的另一种方法是:

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+)/) - 匹配捕获组的数组

Example

答案 1 :(得分:0)

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

let dn = 'uid=user,dc=test';
let change = { operation : 'delete', modification: { myAttribute: oldValue } };
client.modify(dn, change, err => { ... });

答案 2 :(得分:0)

hash.each { |x,y| puts x.split(" ").to_s.gsub("user:", "").to_s.gsub("password:", "") }
# ["xy@xy.com", "azerty"]
# ["yy@yy.com", "qwerty"]

答案 3 :(得分:0)

使用Split

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