• ベストアンサー

文字列の整列

文字列操作に関して、質問があります。 (簡単ですみません) 複数の配列の文字列を、縦にならべて、 出力する時に、(各カテゴリーを横に並べます) 横のズレをなくしたいと思っています。 文字列の長さが決まっていないので、長さによって 縦の並びが、ずれてしまいます。 その上、配列には何も入っていないケースがあります。 > str1     str2     str3     str4     str5 > aa2     aasd3     aa3         aaf6 > ssssddd4    a1     ddaa4     ff     ffgg > as        dd      ffddss このように縦にきれいに並ぶのが、理想です。 何か良い方法はないですか? よろしくお願いいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

文字列の最大長があらかじめ予想される(最大長以下で不定長)なら、 format文とwrite で出力の書式を指定することができます。 ---------------------------------------------------------------- @a1=('aa2', 'aasd3', 'aa3', '', 'aaf6'); @a2=('ssssddd4', 'a1', 'ddaa4', 'ff', 'ffgg'); @a3=('as', '', '', 'dd', 'ffddss'); @data=(\@a1,\@a2,\@3); foreach (@data){ ($field1,$field2,$field3,$field4,$field5) = @$_; write; } format STDOUT_TOP = str1 str2 str3 str4 str5 . format STDOUT = @<<<<<<<<<< @<<<<<<<<<< @<<<<<<<<<< @<<<<<<<<<< @<<<<<<<<<< $field1, $field2, $field3, $field4, $field5 .

参考URL:
http://aspn.activestate.com/ASPN/docs/ActivePerl/5.8/lib/Pod/perlfunc.html#item_format
tmk2z
質問者

お礼

ありがとうございます。 見事に解決しました。 大変助かりました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 んっと。「縦にきれいにに並べたい」場合ですが。 まず、「全て同じ文字数なら」きれいに並びますよね? ですので、基本的には「出力する文字列のうち、もっとも長い文字列」にあわせて、足りない文字列の後ろを空白で補ってやると、結果的に「縦にきれいに並ぶ」出力になります。 手順としては、 1. 最大文字長を見つけ出す 2. ループで、各文字列に「必要なだけの長さの空白を足しこむ」 とやると、きれいに並ぶかと思います。

tmk2z
質問者

お礼

ご回答ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A