Re: [問題] 關於長字串文字排版

看板Perl作者 (What?)時間15年前 (2010/03/31 02:41), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串5/5 (看更多)
※ 引述《ForeverT (全家好神)》之銘言: : 感謝 : 好用的一招 學起來 : 但字數是未知的 : 格式是固定的 : 長字串可能會被削去 : 短字串可能空格太多 : 又該如何解呢? : 希望能依據最長字串做向右或向左對齊 : 謝謝 #!/usr/bin/perl use warnings; use strict; use List::Util qw(max); my @array1 = (10000, 233, 899983, 4908); my @array2 = ( 10, 32323, 73, 343238); my @array3 = ( 1, 233, 3, 88); sub maxlen { map { max map { length } @$_ } @_ } sub center { my ($str, $width) = @_; my $len = length($str); return $str if $len > $width; my $d = $width - $len; my $s = ' ' x int($d/2); return $d % 2 == 0 ? "$s$str$s" : "$s $str$s"; } my @maxlen = maxlen \@array1, \@array2, \@array3; for my $i (0 .. $#array1) { printf "%*s %s %*s\n", -$maxlen[0], $array1[$i], center($array2[$i], $maxlen[1]), $maxlen[2], $array3[$i]; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.180.138

03/31 11:13, , 1F
想問一下 f 大,有什麼情況下 return $str if $len > $wi
03/31 11:13, 1F

03/31 11:14, , 2F
dth; 這行會成立 ?
03/31 11:14, 2F

03/31 14:18, , 3F
謝謝 研究研究
03/31 14:18, 3F

04/01 01:19, , 4F
比如說 center("12345", 3),不過在這個程式中並不會發
04/01 01:19, 4F

04/01 01:22, , 5F
生 $str 的長度比 $width 還要長的情況,只是保險起見
04/01 01:22, 5F

04/01 12:46, , 6F
謝謝 f 大解說 ^_^
04/01 12:46, 6F
文章代碼(AID): #1BiaNe-4 (Perl)
文章代碼(AID): #1BiaNe-4 (Perl)