2008-11-19 7 views
7

In Ruby haben wir die 'bang' Methode capitalize!, die das seltsame Verhalten hat, eine nil zurückzugeben, wenn keine Änderungen an der Zeichenkette gemacht wurden.Ruby 'Groß machen!' Paradoxon

Das bedeutet, dass ich diese Befehle nicht mit anderen verketten kann, da es die Kette effektiv zerstört, wenn es nil zurückgibt.

Was im Versuch ist, etwas zu tun wie folgt aus:

fname = fullname[0...fullname.index(' ')].capitalize! 

, die aus einem String den Vornamen extrahiert und sollte es auch nutzen. Wenn sie jedoch bereits großgeschrieben ist, lautet die in fname gespeicherte Zeichenfolge nil.

Natürlich kann ich noch eine Aussage hinzufügen, aber ich frage mich, ob es einen Weg gibt, dies zu tun, "ohne die Kette zu brechen".

Antwort

17

Verwenden Sie .capitalize (ohne den Knall) - es sei denn, Sie brauchen es wirklich, um die Quelle zu ändern.

+0

omg ... ich kann nicht glauben, dass ich das selbst nicht realisiert habe :(tnx klasse –

+0

Sehr froh, dass es geholfen hat. :) – HanClinto

+0

@HanClinto Was ist, wenn Sie die Variable zu aktivieren und speichern (über!) Aber können nicht garantieren, dass der Benutzer in Kleinbuchstaben eingegeben wird? Gibt es eine Möglichkeit, dies zu tun, ohne eine andere Methode zu verketten? – FluxEngine

7

Da Ihre Aussage, tun gerade nicht den Wert von Fullnamen ändern:

fname = fullname[0...fullname.index(' ')].capitalize 

Was nicht null zurückkehrt, wenn keine Änderung vorgenommen wird.

Verwandte Themen