0

我正在尝试从数据库中提取数据并将其与饼图一起使用。

我能够从数据库中的“浏览器”列中提取数据,该列是一个字符串,格式如下:“Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0”

当我在查询中使用“count”方法时,数据将保存为这样的哈希:

{" Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0 "=>5, " Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:51.0) Gecko/20100101 Firefox/51.0 "= >9}

例如,我只想显示浏览器或操作系统的版本。有没有任何方法(拆分或子字符串)有这样的哈希?当然,“计数”方法应该有效

{" Firefox/45.0 "=>5, " Firefox/51.0 "=>9}

我尝试使用拆分,但在使用方法计数时,将找不到数据,因为它作为一个完整的字符串“Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0”保存在数据库中。数据库中我的表中的列浏览器中没有“Firefox/45.0”。

当我从控制台使用简单查询时,我也尝试在 mysql 查询中使用子字符串我得到了我想要的结果,但是由于我使用的是 Ruby on Rails 和 ActiveRecords,所以“子字符串”没有返回相同的结果(无法正常工作)

请问有什么帮助吗?

4

1 回答 1

0

请执行下列操作:

input = {"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"=>5, "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:51.0) Gecko/20100101 Firefox/51.0"=>9}
result = {}
input.each { |k, v| result[k.split.last] = v }

用您的实际查询替换输入。

它的作用是:

  • 迭代输入的每个元素
  • 对于每一个,使用键 ask和值 as v
  • ksplit它(将字符串切割成用空格分隔的单词),并使用保留最后一个单词last
  • 添加一个新条目,其中键是选择的最后一个单词,值为v.
于 2017-05-02T15:42:25.767 回答