簡體   English   中英

在Ruby中打印一行數組元素

[英]Printing elements of array in one line in Ruby

我有以下Ruby哈希:

hash = {
0 => "
===
@@@
@ @
@ @
@ @
@@@
===",
1 => "
=
@
@
@
@
@
="}

我想在控制台的一行中打印出一些哈希值。 為此,我創建了一個包含我想要打印的元素的數組:

test = [hash[0], hash[1]]

要么

test1 = [hash[0], hash[0]]

如果我想將test1打印到控制台,結果應如下所示:

======
@@@@@@
@ @@ @
@ @@ @
@ @@ @
@@@@@@
======

如果我想將`test2打印到控制台,結果應該是:

====
@@@@
@ @@
@ @@
@ @@
@@@@
====

但是,當我使用putsprint ,結果始終是一個接一個地打印而不是在同一行中。

a1, a2 = hash.values.map { |s| s[1..-1].split("\n") }
  #=> [["===", "@@@", "@ @", "@ @", "@ @", "@@@", "==="],
  #    ["=", "@", "@", "@", "@", "@", "="]] 

puts a1.zip(a1).map(&:join)
======
@@@@@@
@ @@ @
@ @@ @
@ @@ @
@@@@@@
======

puts a1.zip(a2).map(&:join)
====
@@@@
@ @@
@ @@
@ @@
@@@@
====

注意:

a1.zip(a1)
  #=> [["===", "==="], ["@@@", "@@@"], ["@ @", "@ @"], ["@ @", "@ @"],
  #    ["@ @", "@ @"], ["@@@", "@@@"], ["===", "==="]]

a1.zip(a2)
  #=> [["===", "="], ["@@@", "@"], ["@ @", "@"], ["@ @", "@"],
  #    ["@ @", "@"], ["@@@", "@"], ["===", "="]] 

需要刪除hash[0]hash[1]的第一個字符的s[1..-1] ,因為該字符是換行符( "\\n" )。 如果兩行0 => "===寫入0 =>"=== (類似於hash[1] ),我本可以編寫s.split("\\n")

您需要首先創建一個二維結構才能獲得想要的結果。

我建議采取以下步驟:

  1. 解構hash值中的hash

     atomic = hash.values.map{ |e| e.split("\\n")} 

    這會給你

     [["", "===", "@@@", "@ @", "@ @", "@ @", "@@@", "===" ], [ "", "=", "@", "@", "@", "@", "@", "=" ]] 
  2. 使用新數據結構構建所需的輸出

    第一種情況:

     test1 = atomic[0].zip(atomic[0]).map(&:join) puts test1 

    =>

     ====== @@@@@@ @ @@ @ @ @@ @ @ @@ @ @@@@@@ ====== 

    第二種情況:

     test2 = atomic[0].zip(atomic[1]).map(&:join) 

    =>

     ==== @@@@ @ @@ @ @@ @ @@ @@@@ ==== 

我希望你覺得有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM