gpt4 book ai didi

ruby - 将特定字符串映射到 Ruby 中的哈希的最有效方法

转载 作者:数据小太阳 更新时间:2023-10-29 07:42:46 25 4
gpt4 key购买 nike

我是 Ruby 的新手,正在开发一个解析我的一些报告的 CLI 应用程序。我想找出用这一行实现以下目标的最有效方法:

MAXCONN: 2000, MAXSSL_CONN: 500, PLAINCONN: 34, AVAILCONN: 1966, IDLECONN: 28, SSLCONN: 0, AVAILSSL: 500

我想相应地将其映射到哈希中:

{ :maxconn => 2000, :maxssl_conn => 500, :plainconn => 34, :availconn => 1966, :idleconn => 28, :sslconn => 0, :availssl => 500 }

我能想到的唯一方法是在逗号处拆分,然后在分号处再次拆分并映射它们。

我暗暗怀疑可能有一些 Ruby 魔法可以以更有效和更简单的方式实现这一点。

任何输入和/或技巧/提示都将不胜感激,因为我觉得我会相对经常地处理此类问题。

最佳答案

我们结合了将一堆键值对转换为散列的技术

Hash[[[k1, v1], [k2, v2], ...]] #=> { k1 => v1, k2 => v2, ... }

通过正则表达式方法String#scan,将字符串遍历,将匹配项收集到数组中,得到

Hash[reports.scan(/(\w+): (\w+)/).map { |(first, second)| [first.downcase.to_sym, second.to_i] }]

这也使用了一个带有 Enumerable#map 的 block ,它将数组解释为参数列表中的成对的 (first, second) 元素,将它们提取到新元素中,并且对它们应用转换,以便根据您的示例规范定制生成的散列(否则,您只会得到映射到字符串的字符串散列)。

关于ruby - 将特定字符串映射到 Ruby 中的哈希的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5333995/

25 4 0
文章推荐: ruby - 让 ruby​​ 对象响应任意消息?
文章推荐: ruby - 如何检查
文章推荐: ruby - 后台/守护进程
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com