作者frank1983 (What?)
看板Perl
標題Re: [問題] 關於長字串文字排版
時間Wed Mar 31 02:41:42 2010
※ 引述《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
1F:推 cutecpu:想問一下 f 大,有什麼情況下 return $str if $len > $wi 03/31 11:13
2F:→ cutecpu:dth; 這行會成立 ? 03/31 11:14
3F:→ ForeverT:謝謝 研究研究 03/31 14:18
4F:→ frank1983:比如說 center("12345", 3),不過在這個程式中並不會發 04/01 01:19
5F:→ frank1983:生 $str 的長度比 $width 還要長的情況,只是保險起見 04/01 01:22
6F:推 cutecpu:謝謝 f 大解說 ^_^ 04/01 12:46