Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 2.0中如何从字符串数组中获取值_Ruby_Arrays - Fatal编程技术网

Ruby 2.0中如何从字符串数组中获取值

Ruby 2.0中如何从字符串数组中获取值,ruby,arrays,Ruby,Arrays,我有以下字符串数组: array = [ "nike air", "nike steam","nike softy" ,"nike strength", "smooth sleeper","adidas air","addidas jogar","adidas softy","adidas heels"] 我想从中提取字符串作为类似SQL的查询 例如,如果用户输入单词“nike”。然后返回4个字符串作为结果 "nike air", "nike stea

我有以下字符串数组:

array = [ "nike air", "nike steam","nike softy" ,"nike strength",
          "smooth sleeper","adidas air","addidas jogar","adidas softy","adidas heels"]
我想从中提取字符串作为类似SQL的查询

例如,如果用户输入单词“nike”。然后返回4个字符串作为结果

           "nike air", "nike steam","nike softy" ,"nike strength"
           "adidas air","addidas jogar","adidas softy","adidas heels"
例如,如果用户输入单词“阿迪达斯”。然后返回4个字符串作为结果

           "nike air", "nike steam","nike softy" ,"nike strength"
           "adidas air","addidas jogar","adidas softy","adidas heels"
可能吗

array.grep(query)
返回与查询匹配的数组子集。

使用:

为不区分大小写添加
/i
。要从字符串构造regexp,请执行以下操作:

re = Regexp.new( Regexp.escape(my_str), "i" )
或者,如果希望用户能够使用特殊的Regexp查询,只需:

matches = array.grep /#{my_str}/

或者您可以自己构建查询方法:

def func( array )
  array.each_with_object [] do |string, return_array|
    return_array << string if string =~ /nike/
  end
end
def func(数组)
array.each_with_object[]do| string,返回_数组|

return\u array您编写了什么代码来解决这个问题?这是一件非常简单的事情。不直接相关,但可能相关:,它允许您在数据库层执行此操作。它可能会为您提供一个更灵活的解决方案。array.grep('nike')提供了一个带有Regexp而不是字符串的空白数组。@Kashiftufail,即,
/nike/
而不是
'nike'
比所需的工作量(对于程序员和计算机而言)多得多。@Phrogz肯定是针对程序员的。
grep
C-ish的实现吗?否则格雷普不会做同样的事情吗?我现在不能检查。@Phrogh matches=array.grep/nike/给我准确的结果,但是matches=array.grep/“nike/”什么也不给我。因此,我应该如何在我的控制器matches=array.grep/“#{params[:term]}”/params[:term]是字符串值使用
array.grep(Regexp.new(Regexp.new(Regexp.escape(params[:term]))
@louism也许你应该解释一下你的答案,以及这种方法是如何“最好”的要解决OPS问题,此方法更清晰。“选择包含‘nike’的词语”是一个简单、优雅且更为地道的Ruby IMHO。