我有一个看起来像这样从XLSX文件中去掉数据:查找字符
[6, 2]=>"Comment", [6, 3]=>"Complaint", [6, 4]=>"Enquiry"
我想搜索的阵列和前括号返回第二个数字的值。即,搜索Complaint
应该返回3
。任何帮助表示赞赏。
NB - 根据对数组的注释更新。删除了OP中的字符串转换。
require 'roo'
today_file=(File.dirname(__FILE__) + '/output/today-report.xlsx')
def by_value(data, value)
found = data.find do |k, v|
v == value
end
found and found[0][1]
end
data = Roo::Excelx.new (today_file)
output = by_value(data, "Complaint").inspect
puts output
当运行这个返回“零”
从这个阵列的输出是这种形式:
{[1, 1]=>"YESTERDAY - 02/10/14", [1, 4]=>"Another comment below the fold - scroll down", [2, 1]=>"Yesterday we received 11 regarding the service.", [4, 1]=>"TYPE", [6, 1]=>"", [6, 2]=>"Comment", [6, 3]=>"Complaint", [6, 4]=>"Enquiry", [6, 5]=>"Total (Type)", [7, 1]=>"Editorial and other queries", [7, 2]=>1.0, [7, 3]=>7.0,...}
数据是哈希还是大格式字符串? – Linuxios 2014-11-04 16:14:26
从字面上看,你的数据结构如何?数组对象作为键的散列?如果是这样的话,那会很容易......如下所示:'data.key(string)[1]'如果data是该结构而'string'是您要查找的字符串。 – lurker 2014-11-04 16:14:49
如果它更容易,它可能非常容易。它目前是一个转换为字符串的散列。 – 2014-11-04 16:16:32