如何在哈希中获取数组

时间:2012-04-07 20:25:17

标签: ruby hash

我有这个哈希:@infodata[:titles] = Array.new([])。我正在存储一些值,然后我正在尝试获取值。

if name == 'title'
      Hash[@attrs]['xml:lang']
      @infodata[:titles] << @content
      @content = nil
    end

这就是“机器”里面的样子

:titles => [
        [0] "Arkivvetenskap",
        [1] "Archival science"]

然后在我的代码的第二部分中,我保存为CSV,如下所示:

def end_document
     CSV.open("infodata.csv", "wb") do |csv|
        csv << @infodata.values
     end
end

我得到的输出是:

avancerad,Ingen examen,uh,ArkivvetenskapArchival science,HIA80D,10.300,uoh,"Arkivvetenskap rör villkoren för befintliga arkiv och modern arkivbildning med fokus på arkivarieyrkets arbetsuppgifter: bevara, tillgängliggöra och styra information. Under ett år behandlas bl a informations- och dokumenthantering, arkivredovisning, gallring, lagstiftning och arkivteori. I kursen ingår praktik, där man under handledning får arbeta med olika arkivarieuppgifter.",statlig,60

我想要的输出是:

avancerad,Ingen examen,uh,Arkivvetenskap, Archival science,HIA80D,10.300,uoh,"Arkivvetenskap rör villkoren för befintliga arkiv och modern arkivbildning med fokus på arkivarieyrkets arbetsuppgifter: bevara, tillgängliggöra och styra information. Under ett år behandlas bl a informations- och dokumenthantering, arkivredovisning, gallring, lagstiftning och arkivteori. I kursen ingår praktik, där man under handledning får arbeta med olika arkivarieuppgifter.",statlig,60

如何分隔两个数组值。 如果您想查看孔代码:https://gist.github.com/2328752

2 个答案:

答案 0 :(得分:0)

Ewwwwww ... @infodata[:titles][index]

如果你想要一个例子:

> @infodata[:titles] = %w(abba baba)
 => ["abba", "baba"] 
> @infodata[:titles][0]
 => "abba" 
> @infodata[:titles][1]
 => "baba" 
> @infodata[:titles][0..1]
 => ["abba", "baba"] 

答案 1 :(得分:0)

如果你有一个哈希数组,你想存储它或输出..或其他什么。你可以展平它,这意味着它返回一个新的数组,这个数组是这个哈希的一维展平。也就是说,对于作为数组的每个键或值,将其元素提取到新数组中。

def end_document
     CSV.open("infodata.csv", "wb") do |csv|
        csv << @infodata.values.flatten
     end
end