2016-06-30 114 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 
相關問題