为什么Array.to_s返回括号?

use*_*553 11 ruby regex arrays html-parsing

对于数组,当我输入:

puts array[0]

==> text 
Run Code Online (Sandbox Code Playgroud)

然而,当我打字

puts array[0].to_s

==> ["text"]
Run Code Online (Sandbox Code Playgroud)

为什么括号和引号?我错过了什么?

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
Run Code Online (Sandbox Code Playgroud)

我得到的是:

http://www.stackoverflow/["questions"]
Run Code Online (Sandbox Code Playgroud)

Eri*_*cia 20

这样就可以打印出没有括号的数组

array.join(", ")
Run Code Online (Sandbox Code Playgroud)


小智 12

to_s只是检查Array类的别名.

并不是说这意味着很多,而不是期望array.to_s返回一个字符串,它实际上返回了array.inspect,它基于方法的名称,并不是你真正想要的.

如果你只想"胆量"尝试:

page_array.join
Run Code Online (Sandbox Code Playgroud)

如果数组有多个元素:

page_array.join(" ")
Run Code Online (Sandbox Code Playgroud)

这将使:

page_array = ["test","this","function"]
Run Code Online (Sandbox Code Playgroud)

返回:

"test this function"
Run Code Online (Sandbox Code Playgroud)

返回的"to_s"取决于您正在使用的Ruby版本,如上所述.1.9.X回报:

"[\"test\"]"
Run Code Online (Sandbox Code Playgroud)


iai*_*ain 2

您需要向我们展示正则表达式才能真正正确地解决此问题,但这可以做到这一点:

替换这个

partial_url = page_array[0].to_s
Run Code Online (Sandbox Code Playgroud)

有了这个

partial_url = page_array[0][0]
Run Code Online (Sandbox Code Playgroud)