Почему Array.to_s возвращает скобки?

Для массива, когда я печатаю:

puts array[0]

==> text 

Но когда я печатаю

puts array[0].to_s

==> ["text"]

Почему скобки и кавычки? Что мне не хватает?

ADDENDUM: мой код выглядит следующим образом

page = open(url)  {|f| f.read }
page_array = page.scan(/regex/) #pulls partial urls into an array
partial_url = page_array[0].to_s
full_url = base_url + partial_url #adds each partial url to a consistent base_url
puts full_url

то, что я получаю, выглядит следующим образом:

http://www.stackoverflow/["questions"]

Ответ 1

Отпечатать массив без скобок

array.join(", ")

Ответ 2

to_s - это просто псевдоним для проверки класса Array.

Не то, чтобы это означало многое другое, чем вместо того, чтобы ожидать, что array.to_s вернет строку, которая фактически возвращает array.inspect, который, основываясь на имени метода, на самом деле не является тем, что вы ищете.

Если вам нужны только "кишки", попробуйте:

page_array.join

Если в массив есть несколько элементов:

page_array.join(" ")

Это сделает:

page_array = ["test","this","function"]

Возврат:

"test this function"

То, что возвращает "to_s" в массиве, зависит от версии Ruby, которую вы используете, как указано выше. 1.9.X возвращает:

"[\"test\"]"

Ответ 3

Вам нужно показать нам регулярное выражение, чтобы действительно исправить это правильно, но это сделает это:

Замените это

partial_url = page_array[0].to_s

с этим

partial_url = page_array[0][0]

Ответ 4

Это не обязательно означает, что почему вы получаете удвоенный массив, но можете сгладить его, а затем вызвать первый элемент, подобный этому.

page_array = page.scan(/regex/).flatten

Сглаживание вынимает многоуровневые массивы и создает один уровень, поэтому, если у вас есть [1,2,[3,[4,5,6]]] и вызывается сглаживание на нем, вы получите [1,2,3,4,5,6]

Он также более устойчив, чем выполнение array[0][0], поскольку, если у вас было больше двух массивов, вложенных в первый элемент, вы столкнулись бы с той же проблемой.

Iain корректен, хотя, не видя регулярное выражение, мы не можем объяснить основную причину.