2017-12-16 5 views
1

Mein Ziel ist es, eine einzeilige Ausgabe mit 3 verschiedenen Variablen (alle Strings) zu erstellen, die mit der ersten Variablen linksbündig, der zweiten Variablen zentriert und der letzten Variablen rechtsbündig ausgerichtet sind die Variablen, wenn ihre Größe kleiner als der zugewiesene Speicherplatz ist.Ruby String Ausgabe

Die variable Schlitze sind: Variablen 1,3 = max Stringlänge von 10 Variable 2 = max Stringlänge von 7

(es wird Raum Puffern von 2 Räumen zwischen Variablen 1 & 2 und 2 & 3 sein)

Ich möchte Variablen 1 & 3 die gleiche Größe (10) unabhängig von Benutzereingaben sein. Wenn die Eingabe kleiner als 10 ist, möchte ich, dass dort entweder am Ende (Variable 1 - linksbündig) oder am Anfang (Variable 3 - rechtsbündig) gepolstert wird.

Ich habe versucht,/sprintf Methoden mit verschiedenen Formaten und Argumente zu lernen, aber ich bekomme immer Fehler oder leere Ausgänge alle zusammen.

****IDEAL OUTPUT EXAMPLE**** 

VARIABLE 1 VARIAB2 VARIABLE 3 
+1

Was haben Sie versucht? Können Sie die Codeschnipsel posten, die Sie versucht haben und die nicht ganz funktionieren? – Joe

Antwort

2

Sie können die verschiedenen verfügbaren Methoden in der Klasse String verwenden.

input1 = 'one' 
input2 = 'two' 
input3 = 'three' 

input1 = input1.ljust 10 
#=> "one  " 
input2 = input2.center 7  #credit to user Simple Lime 
#=> " two " 
input3 = input3.rjust 10 
#=> "  three" 

puts output = input1 + ' ' + input2 + ' ' + input3 
#one   two   three 
output.size 
#=> 31 
+2

Die 'input2'' bis'-Schleife wird auf geraden Strings brechen (na ja, richtiger, wird nie brechen), glücklicherweise hat Ruby uns bedeckt: check out the ['center'] (http: // ruby-doc .org/core-2.4.2/String.html # method-i-center) Methode für String ... Bei geradzahligen Strings wird jedoch ein zusätzliches Leerzeichen hinzugefügt: '" 12 ".center (7, 'x ') # => "xx12xxx" ' –

+0

@SimpleLime Ich sehe was du über die Schleife meinst. Auch ich kann nicht glauben, dass ich "Mitte" verpasst habe. Danke, habe meine Antwort aktualisiert. –

+0

Das ist, was ich brauchte. Wusste nicht, dass es bereits eine eingebaute Methode in Ruby gab. Danke für deine Hilfe, das ist perfekt. –