2016-06-30 90 views
0

我有一个字符串检查一个字符串是否是任何多个项目

x = "student" 

我怎么检查,如果“X”相匹配的任何项目中,我有名字的列表。这些名字是一个固定的名单。

names = ["teacher", 
     "parent", 
     "son", 
     "daughter", 
     "friend", 
     "classmate", 
     "principal", 
     "vice-principal", 
     "student", 
     "graduate"] 

我试过设置名称作为列表并使用任何?检查列表,但似乎只适用于数组,我有一个字符串。

我使用Ruby 2.2.1此外,我只需要它,如果该项目在列表

+0

你是什么意思*我有一个字符串*? 'names'是一个数组! – spickermann

+0

@spickermann我的对象是传入我的方法的字符串。该阵列是固定的,不会改变。所以我从这里查看它是一个字符串,让我把它匹配到这个数组中的任何项目,而不是这里是我的数组,让我看看是否包含字符串。 – SupremeA

回答

3
names.include?(your_string) 

如果字符串数组内,它将返回true

+0

谢谢,明白了!我正在从匹配数组的字符串而不是包含字符串的数组中查看它。 DUH!谢谢 – SupremeA

1

可以使用包括返回true或false?在阵列的方法,像这样:

if names.include? x do 
    # x is an element in the list 
end 
+2

这不行!你应该删除'do' – Aleksey

0

如果你的names数组包含的x多个实例?然后假设你没有布尔值后,你可以使用Enumerable#count,在那里我们传递代码块中所需的条件。在您的例子中,我们将有:

names.count{ |i| i == x } #=> 1 

又如:

x = "student" 
names = ["student", "cleaner", "student"] 

names.count{ |i| i == x } #=> 2 
1

您也可以使用grep查找字符串的存在数组或不

names = ["teacher", 
     "parent", 
     "son", 
     "daughter", 
     "friend", 
     "classmate", 
     "principal", 
     "vice-principal", 
     "student", 
     "graduate"] 

names.grep(/^daughter$/) 
0

这里还有一种方法可以做到这一点:

if not (names & [x]).empty? 
    puts "'#{x}' is present in names" 
end 
相关问题