2012-03-28 11 views
0

Ich bin neu in Ruby und es könnte ein paar grundlegende Sachen sein, aber es macht mich nur verrückt.Ruby String Vergleich gegen Regex Capture

Wie ist folgendes möglich?

(rdb:1) display $2 
    26: $2 = "Alien" 

    (rdb:1) display $2 == "Alien" 
    27: $2 == "Alien" = false 

    (rdb:1) display $2.equal? "Alien" 
    28: $2.equal? "Alien" = false 

    (rdb:1) display $2.strip.chomp.equal? "Alien" 
    29: $2.strip.chomp.equal? "Alien" = false 

    (rdb:1) display $2.class 
    30: $2.class = String 

Rubin 1.9.3p125, Rails 3.1.0, Gurke 1.1.8

+0

Kommt das in IRb usw. vor, oder nur in Ruby-Debug? –

+0

Vielleicht sollten Sie '(' und ')' nur verwenden, um sicherzustellen, was Sie überprüfen möchten? Ruby versucht zu erraten (gut, nicht das richtige Wort hier) was Sie sagen wollen, aber mit '(' macht es viel klarer. – mliebelt

+0

@AndrewMarshall in Ruby-Debug und auch während der Code selbst ohne Debugging – Grozz

Antwort

0
(rdb:1) display $2[0] 
2: $2[0] = " 

Mistery gelöst.

+1

Im Allgemeinen, wenn ein "offensichtlicher" String-Vergleich schlägt fehl, ich schaue auf ... 1. das erste Zeichen, 2. das letzte Zeichen und 3. die Länge, um zu sehen, ob es einige nicht-druckende Zeichen in der Zeichenkette oder eine andere allgemeine Verrücktheit gibt. –