我想从ViddlRb获取一个没有扩展名的文件名。 如果我使用Youtube网址运行get_names方法,我将返回一个数组。我这样做:
file = ViddlRb.get_names(url)
file.first
file.to_s
puts file
filename = File.basename(file, '.*')
但如果我正在运行它,我会得到:
'中的 :没有将Array隐式转换为String
也许有人知道它为什么会破裂?我以为file.to_s做了那个工作。
答案 0 :(得分:2)
当您致电file.to_s
时,它会返回字符串转换的结果,但它不修改您的file
变量。与您对.first
的通话相同。考虑这个例子:
file = ["filename.txt"]
file.first
file.to_s
=> "[\"filename.txt\"]"
puts file
=> ["filename.txt"]
解决问题的最简单方法是在basename参数中调用first
和to_s
。所以:
filename = File.basename(file.first.to_s, '.*')
在传入之前,您可以使用它创建另一个变量。