/ / Използване на .split на низ в масив - ruby, масиви, сплит

Използвайки .split на низ в масив - рубин, масиви, разделени

За вход като 12,34,56; 78,91; 50,60;

Искам да разделя струната с разделител от точка и след това тези низове се разделят на запетая

пр:

puts "Input: "
input = gets.chomp
s_array = input.split(";")
for i in 0..s_array.size
puts s_array[i].split(",")
end

Той ще печата успешно с puts но след като получа грешка

undefined method "split" for nil:NilClass <NoMethodError>

Каква е причината за тази грешка?

Отговори:

2 за отговор № 1

промяна .. за ...

for i in 0...s_array.size

Създаване на диапазон с .. е включено, докато ... не е, напр.

1..5  # => 1,2,3,4,5
1...5 # => 1,2,3,4

Така че променливата i препълва масива, в случая, ако размерът на масива е 5, array_s [5] ще бъде nill.


2 за отговор № 2

По-грубият подход е:

input.split(";").each { |x| puts x.split (",") }

Трябва да използвате Array # всеки, това не е рубин да се използва for и има много малко случаи, в които for на мястото на each в рубин и for ключова дума делегати each дори когато се използва.