作者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