2016-06-30 24 views
0

Ich habe eine ZeichenfolgeÜberprüfen Sie, ob eine Zeichenfolge eine beliebige mehrerer Elemente ist

x = "student" 

wie kann ich überprüfen, ob „x“ entspricht einem der Elemente in einer Liste von Namen, die ich habe. Die Namen sind eine feste Liste.

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

Ich habe versucht, Namen als Liste zu setzen und irgendwelche? um die Liste zu überprüfen, aber das scheint nur für ein Array zu funktionieren und ich habe eine Zeichenfolge.

Ich bin mit Ruby-2.2.1 Auch muss ich es nur wahr oder falsch zurück, wenn das Element in der Liste ist

+0

Was meinst du mit * Ich habe eine Zeichenfolge *? 'name' ist ein Array! – spickermann

+0

@spickermann Mein Objekt ist der String, der an meine Methode übergeben wird. Das Array ist fest und ändert sich nicht. Also ich habe es aus der Sicht von hier ist eine Zeichenfolge und lassen Sie mich es zu jedem Element in diesem Array statt hier ist mein Array, lassen Sie mich sehen, ob die Zeichenfolge enthalten ist. – SupremeA

Antwort

3
names.include?(your_string) 

Wenn die Zeichenfolge innerhalb des Arrays ist, wird es true zurück

+0

Danke, dass es hat! Ich habe es von der Zeichenkette, die dem Array entspricht, betrachtet, anstatt von dem Array, das die Zeichenkette enthält. DUH! Vielen Dank – SupremeA

1

Sie die Include verwenden kann? Verfahren auf Array wie folgt:

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

Das würde nicht funktionieren! Sie sollten entfernen "do" – Aleksey

0

Was passiert, wenn Ihr names Array mehrere Instanzen von x enthält? Dann, vorausgesetzt, Sie sind nicht nach einem booleschen Wert, können Sie Enumerable#count verwenden, wo wir die Bedingung innerhalb eines Codeblocks übergeben. In Ihrem Beispiel hätten wir:

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

Ein weiteres Beispiel:

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

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

Sie auch grep verwenden können Zeichenfolge für die Suche in einem Array vorhanden ist oder nicht

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

names.grep(/^daughter$/) 
0

Hier ein weiterer Weg, dies zu tun:

if not (names & [x]).empty? 
    puts "'#{x}' is present in names" 
end 
Verwandte Themen