【问题标题】:How to convert two strings into an array of two in Ruby如何在Ruby中将两个字符串转换为两个数组
【发布时间】:2022-01-10 08:15:19
【问题描述】:

我希望从哈希中提取键和值。我设法检索数据,但格式错误。我正在执行以下操作:

@message_count_series = @messages.collect { |p| "[#{p["created_at"]}, #{p["total_cnt"]}]" }
 => ["[2021-12-02 13:21:19.837233, 3]", "[2021-11-20 13:54:54.846048, 3]"] 

我想得到的是:

 => [[2021-12-02 13:21:19.837233, 3], [2021-11-20 13:54:54.846048, 3]] 

只是没有引号(不是字符串)。

我尝试了以下方法:

@message_opened_series = @messages.collect { |p| ["#{p["created_at"]}, #{p["opened_cnt"]}"] }
 => [["2021-12-02 13:21:19.837233, 1"], ["2021-11-20 13:54:54.846048, 0"]] 

这让我更接近了,但现在我的数据被视为数组中的字符串。

以下似乎可行,但可能不是很健壮

@message_opened_series = @messages.collect { |p| [DateTime.parse("#{p["created_at"]}"), ("#{p["opened_cnt"]}").to_i] }
 => [[Thu, 02 Dec 2021 13:21:19 +0000, 1], [Sat, 20 Nov 2021 13:54:54 +0000, 0]] 

请问有更好的方法吗?

【问题讨论】:

  • 您的原始哈希看起来如何?原始哈希值的数据类型是什么?为什么你认为你的最后一个版本,有效,可能不健壮?哈希是否可能包含无效数据?
  • 您想要的结果不是合法的 Ruby 对象,因此,您不可能得到这个结果。

标签: ruby ruby-on-rails-3


【解决方案1】:
@message_opened_series =
  @messages.collect { |p| [p["created_at"].to_s, p["opened_cnt"]] }
 => [["2021-12-02 13:21:19.837233", 3], ["2021-11-20 13:54:54.846048", 3]]

【讨论】:

    猜你喜欢
    • 2021-12-25
    • 2022-01-27
    • 2014-11-23
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多