2017-03-29 1 views
0
str = "Blah00blah001" 
str1 = "" 
str1 = str.gsub(/[0-9]+$/,'') 

print str.chars 
puts 
print str1.chars 
puts 

print str.chars - str1.chars 

AusgangWo ist die "0" weg?

["B", "l", "a", "h", "0", "0", "b", "l", "a", "h", "0", "0", "1"] 
["B", "l", "a", "h", "0", "0", "b", "l", "a", "h"] 
["1"] 

, was ich in den letzten Druck erwartet

["0","0","1"] 

Was habe ich

["1"] 

Warum ist es so?

+0

Ich bin mir nicht sicher, warum, aber es ist auf jeden Fall ein paar Nullen in 'str1'. – AJFaraday

+1

Können Sie bitte Ihre Frage klären? Was meinst du mit "warum ist es so"? Was ich damit meine, welche Antwort erwarten Sie, außer "weil das die Dokumentation der Methode sagt"? –

+0

Hinweis "[1,0,1,0,1,1] - [0,1] # => []'. –

Antwort

3

Eine schnelle Zitat aus der Dokumentation von Array#-:

ary - other_ary → new_ary

ein neues Array zurück, das eine Kopie des Original-Array ist, dass auch alle Elemente entfernt in erscheinen other_ary. Die Reihenfolge wird vom ursprünglichen Array beibehalten.

Das Beispiel nach der Beschreibung geschrieben zeigt, wie es funktioniert (das gleiche wie Sie sich mit Ihrem Arrays funktioniert):

[ 1, 1, 2, 2, 3, 3, 4, 5 ] - [ 1, 2, 4 ] #=> [ 3, 3, 5 ] 
4

Das ist das erwartete Ergebnis - - funktioniert wie der Set-Unterschied und entfernt alle Elemente, die im zweiten Array erscheinen. Überprüfen Sie die documentation.