【问题标题】:Ruby: Passing an array to starts_with?Ruby:将数组传递给starts_with?
【发布时间】:2016-11-23 23:29:28
【问题描述】:

我想检查我的网址是否以某些字符串开头,以便之后将其保存到数据库中。字符串存储在一个数组中,由于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 是否为真。我不擅长 Ruby 中的数组和循环,因此不胜感激!

【问题讨论】:

  • url 的值是多少?你想在这里进行什么样的检查?您要检查url 是否以数组中的任何值开头,还是要检查 url 是否以数组中的所有条目开头?
  • url 只是一个像 www.example.com/content1/test.html 这样的地址,我想测试 url 是否以数组值之一开头
  • 仅供参考,它是start_with?,而不是starts_with?,但可能应该是starts_with?

标签: ruby-on-rails arrays ruby loops


【解决方案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

【讨论】:

    【解决方案2】:

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

    save_url = url.start_with?(*array)
    

    【讨论】:

      【解决方案3】:

      您可以尝试使用 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
      

      【讨论】:

      猜你喜欢
      • 2016-08-01
      • 2018-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 2012-03-15
      • 2021-07-19
      相关资源
      最近更新 更多