In Python, dieses Idiom für String-Formatierung ist durchaus üblichWas ist Ruby entspricht Python `s =" Hallo,% s. Wo ist% s? " % ("John", "Mary") `
s = "hello, %s. Where is %s?" % ("John","Mary")
Was ist das Äquivalent in Ruby?
In Python, dieses Idiom für String-Formatierung ist durchaus üblichWas ist Ruby entspricht Python `s =" Hallo,% s. Wo ist% s? " % ("John", "Mary") `
s = "hello, %s. Where is %s?" % ("John","Mary")
Was ist das Äquivalent in Ruby?
Der einfachste Weg ist string interpolation. Sie können kleine Stücke Ruby-Code direkt in Ihre Strings injizieren.
name1 = "John"
name2 = "Mary"
"hello, #{name1}. Where is #{name2}?"
Sie können auch Zeichenfolgen in Ruby formatieren.
"hello, %s. Where is %s?" % ["John", "Mary"]
Denken Sie daran, eckige Klammern dort zu verwenden. Ruby hat keine Tupel, nur Arrays, und diese verwenden eckige Klammern.
Ich würde definitiv die erste verwenden, sieht es besser für mich aus – David
Die erste wird nicht funktionieren, die # {} sucht nach einer Variablen, so in diesem Fall würde es die John-Variable, nicht die Zeichenfolge drucken " John". Die zweite sieht richtig aus. –
Guter Punkt Jason, ich werde es bearbeiten, um es klarer zu machen. – AboutRuby
Fast die gleiche Art und Weise:
irb(main):003:0> "hello, %s. Where is %s?" % ["John","Mary"]
=> "hello, John. Where is Mary?"
Bedeuten die eckigen Klammern in Ruby ein Tupel? Ich dachte, eckige Klammern sind Listen ... – TIMEX
@TIMEX: Diese Frage wird helfen: http://StackOverflow.com/Questions/525957/Tuples-in-Ruby –
Ruby hat keine Tupel (zumindest nicht in die Sprache geschmiedet). Ja, es ist ein Array ("Liste" in Python sollte eigentlich Arrays heißen ...). – delnan
Eigentlich fast der gleiche
s = "hello, %s. Where is %s?" % ["John","Mary"]
In Ruby 1.9 können Sie dies tun:
s = "hello, %{name1}. Where is %{name2} ?" % { :name1 => 'John', :name2 => 'Mary' }
Edit: hat fehlen ':' s
: name1 : name2 Nein? – masnun
Ich habe dort in der * Idomatic Ruby * Entsprechung editiert - aber jetzt merke ich die akzeptierte Antwort tut das schon - entfernte die 'edit' wieder: -/ – toong
Bei Verwendung eines Hash mit der Zeichenfolge% operator, wenn das Schlüsselsymbol in der Format String ist nicht vorhanden, Sie erhalten einen KeyError. – user1164178
Es gibt keine String-Verkettung, nur String-Formatierung. Und google wird das schneller beantworten, als es SO jemals könnte ... Ich brauchte ungefähr 20 Sekunden, um herauszufinden, dass Sie in Ruby genau dasselbe machen können. – delnan
Sie fragen nicht nach Verkettung, Sie fragen nach Formatierung/Substitution. Sie sollten Ihre Frage ändern. Im Rubin wird die Verkettung übrigens mit den Operatoren + oder << durchgeführt. – David