为什么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"]
这样就可以打印出没有括号的数组
array.join(", ")
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\"]"
你需要告诉我们正则表达式才能真正解决这个问题,但这样做会:
替换它
partial_url = page_array[0].to_s
有了这个
partial_url = page_array[0][0]
这并不一定能解决为什么你得到一个双重数组,但是你可以将它展平,然后像这样调用第一个元素。
page_array = page.scan(/regex/).flatten
展平取出堆叠的数组并创建一个级别,所以如果你有[1,2,[3,[4,5,6]]]
并且在它上面被称为展平,你会得到[1,2,3,4,5,6]
它也比执行array[0][0]
更健壮,因为如果你在第一个元素中嵌套了两个以上的数组,你会遇到同样的问题。
虽然Iain是正确的,但没有看到正则表达式,我们无法找出根本原因。