2016-03-21 4 views
-2

Ich versuche, Zeichenfolgen auf einer einzelnen Zeile mit unterschiedlichen Ausrichtungen zu drucken. Ich würde drucken möchten:Drucken Zeichenfolge zweimal in der gleichen Zeile mit verschiedenen Ausrichtungen

---> text <---   ---> text <--- 

ich getan habe:

lineWidth = 40 
str = "---> text <---" 
puts str.ljust lineWidth str1.center lineWidth 

ich eine Fehlermeldung erhalten:

in `<main>': undefined method `lineWidth' for main:Object (NoMethodError) 

Irgendwelche Gedanken?

+1

Verwenden Sie weitere Klammern und Kommas. –

+0

@SergioTulentsev können Sie ein Beispiel geben? – Andrew

+1

Zum Beispiel 'str.ljust (lineWidth)' anstelle von 'str.ljust lineWidth'. Ihr Code wird in seiner aktuellen Form als 'puts (str.ljust (lineWidth (str1.center (lineWidth)))) analysiert. Nicht ganz was du willst, oder? –

Antwort

3

Try this:

puts str.ljust(lineWidth/2) + str.rjust(lineWidth/2) 
+1

Geben Sie bei der Beantwortung mehr als den Code an. Erklären/lehren Sie, warum das angebracht ist. Es ist auch gut, die falsche Verwendung der Sprache zu korrigieren. 'lineWidth' ist nicht der Ruby-Weg,' line_width' ist. –

1

Wie @SergioTulentsev sagte, lesen Ruby-Interpreter Ihren Code wie:

puts(str.ljust(lineWidth(str1.center(lineWidth)))) 

Sie benötigen Klammern verwenden, um zu unterscheiden einen puts Anruf von einem anderen:

puts(str.ljust(lineWidth)) 
puts(str.ljust(lineWidth)) 
+0

Ja, die Antwort –

1

printf und format sind hervorragend Ausgabe mehrerer Variablen in einer einzigen Zeile:

irb(main):006:0> lineWidth = 40 
=> 40 
irb(main):007:0> str = "---> text <---" 
=> "---> text <---" 
irb(main):008:0> printf("%s%s\n",str.ljust(lineWidth), str.center(lineWidth)) 
---> text <--- 

           ---> text <--- 
1

Hier sind drei weitere Möglichkeiten, das zu tun.

str = "---> text <---" 
line_width = 40 

# 1

puts str + " " * (line_width - 2 * str.length) + str 

---> text <---   ---> text <--- 
0   1   2   3   4 

# 2

s = " " * line_width 
    #=> "          " 
s[0, str.length] = s[-str.length..-1] = str 
puts s 

---> text <---   ---> text <--- 
0   1   2   3   4   

# 3

s = str * 2 
    #=> "---> text <------> text <---" 
s.insert(str.length, " " * (line_width - 2 * str.length)) 
puts s 

---> text <---   ---> text <--- 
0   1   2   3   4   

oder (eine Variante)

s = str * 2 
s[str.length, 0] = " " * (line_width - 2 * str.length) 
puts s 

---> text <---   ---> text <--- 
0   1   2   3   4   
+0

behoben das ist sehr hilfreich, danke – Andrew

Verwandte Themen