Ruby:将数组传递给starts_with?

时间:2016-07-20 16:38:07

标签: ruby-on-rails arrays ruby loops

我想检查我的url是否以某些字符串开头,然后将其保存到数据库中。字符串存储在一个数组中,由于starts_with?接受多个值,我想在starts_with?中获取所有数组值。

array = ["www.example.com/content1", "www.example.com/content2", "www.example.com/content3"]

save_url = url.starts_with?() #here I want to insert all array values, but how?

if save_url #I want to check if save_url is true so my entries are somewhat filtered
DBTable.create(url: url)

所以我的问题是如何将数组值传递给starts_with?以及如何检查save_url是否为true。我不擅长Ruby中的数组和循环,所以任何帮助都会受到赞赏!

3 个答案:

答案 0 :(得分:13)

您可以尝试使用splat运算符(*)来放置数组,如下所示:

url = 'www.example.com/content1/test.html'# => "www.example.com/content1/test.html"
array = ["www.example.com/content1", "www.example.com/content2", "www.example.com/content3"]
save_url = url.starts_with?(*array) #=> true

答案 1 :(得分:4)

您可以按如下方式将URL数组传递给 start_with?方法。

save_url = url.start_with?(*array)

答案 2 :(得分:1)

start_with接受多个字符串作为参数,但不是多个字符串的数组,我不认为。

为什么不循环数组并在循环中调用start_with;

array.each do | valid_url |
  save_url = url.starts_with? valid_url
  return unless save_url
  DBTable.create(url: url)
end