对于数组,当我输入:
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"]
答案 0 :(得分:20)
按不带括号的方式打印数组
array.join(", ")
答案 1 :(得分:12)
to_s只是检查Array类的别名。
并不是说这意味着很多,而不是期望array.to_s返回一个字符串,它实际上返回了array.inspect,它基于方法的名称,并不是你真正想要的。
如果您只想要“胆量”,请尝试:
page_array.join
如果数组有多个元素:
page_array.join(" ")
这将使:
page_array = ["test","this","function"]
返回:
"test this function"
Array上返回的“to_s”取决于您正在使用的Ruby版本,如上所述。 1.9.X回报:
"[\"test\"]"
答案 2 :(得分:2)
你需要告诉我们正则表达式才能真正解决这个问题,但是这样做了:
替换此
partial_url = page_array[0].to_s
用这个
partial_url = page_array[0][0]
答案 3 :(得分:1)
这并不一定能解决为什么你得到一个双重数组,但是你可以将它展平,然后像这样调用第一个元素。
page_array = page.scan(/regex/).flatten
展平会取出堆叠数组并创建一个级别,因此如果您有[1,2,[3,[4,5,6]]]
并且在其上调用展平,则会得到[1,2,3,4,5,6]
它比执行array[0][0]
更强大,因为如果你在第一个元素中嵌套了两个以上的数组,那么你会遇到同样的问题。
虽然Iain是正确的,但没有看到正则表达式,我们无法找出根本原因。