2017-09-04 1 views
-2

Ich habe ein Array von Strings, die mit Leerzeichen getrennt sind:bestimmte Elemente in Strings in einem Array

[ 
    "[AT0000 EUR 33.09 32.09 00.0]", 
    "[AT0001 EUR 32.34 31.00 00.0]", 
    "[AT0002 EUR 34.23 34.01 00.0]", 
] 

Ich möchte den ersten bekommen, 2. und 5. Positionen jeder Zeile. Wie wird das erreicht?

+4

Bitte bearbeiten Sie, um Ihr "Array von Strings" zu einem gültigen Ruby-Objekt zu machen. Siehe die Antworten zur Orientierung. –

Antwort

3

Sie können split und dann values_at verwenden, um die Werte zu einem bestimmten Index zu erhalten:

array = [ 
    "[AT0000 EUR 33.09 32.09 00.0]", 
    "[AT0001 EUR 32.34 31.00 00.0]", 
    "[AT0002 EUR 34.23 34.01 00.0]", 
] 

results = array.map do |element| 
    element.split.values_at(0, 1, 4) 
end 

puts results.inspect 
# => [["[AT0000", "EUR", "00.0]"], ["[AT0001", "EUR", "00.0]"], ["[AT0002", "EUR", "00.0]"]] 

wenn Sie nicht wollen, die offen/Ende Klammern ([]) enthalten Sie können nur mit dem Text innerhalb von ihnen als solche arbeiten:

results = array.map do |element| 
    element[/\[(.*)\]/, 1].split.values_at(0, 1, 4) 
end 

puts results.inspect 
# => [["AT0000", "EUR", "00.0"], ["AT0001", "EUR", "00.0"], ["AT0002", "EUR", "00.0"]] 
2

Wollen Sie ["AT0000", "EUR", "00.0"]?

Es könnte sein, mit ausgewählten und with_index:

array = %w[AT0000 EUR 33.09 32.09 00.0] 
p array.select.with_index { |_, index| [0,1,4].include?(index) } 
# ["AT0000", "EUR", "00.0"] 
Verwandte Themen