Почему Array.to_s возвращает скобки? - PullRequest
11 голосов
/ 12 января 2012

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

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"]

Ответы [ 4 ]

20 голосов
/ 24 января 2013

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

array.join(", ")
12 голосов
/ 12 января 2012

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

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

Если вы хотите просто "мужество", попробуйте:

page_array.join

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

page_array.join(" ")

Это даст:

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

return:

"test this function"

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

"[\"test\"]"
2 голосов
/ 12 января 2012

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

Заменить это

partial_url = page_array[0].to_s

с этим

partial_url = page_array[0][0]
1 голос
/ 12 января 2012

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

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

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

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

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

...