怎样用printf实现“999,999”这样的输出?



QUOTE:
原帖由 jjqing 于 2008-10-18 18:57 发表
File System Usage

File_System         Mount_Point         Total_Space         Free_Space         Used_Rate
/dev/dsk/c0d0s0         /         7385 M         2438 M         67 %
swap         / ...

《精通正则表达式》一书中明确写了使用“断言”功能,呵呵。


QUOTE:
原帖由 churchmice 于 2008-10-19 22:18 发表
其实先把字符串反序然后从左到右隔三位加一个逗号更加简单,而且效率会更高,因为没有正则的r回溯

有小数怎么办?


QUOTE:
原帖由 dl0622 于 2008-10-19 21:02 发表
我大概理解了:
local $_  = shift;  #表示取参数,就是999999999999
1 while s/^([-+]?\d+)(\d{3})/$1,$2/;   #只要符合正则式,就继续划分下去,该正则式是以+号或-号以及0个或多个数字开头的,以倒数第三个 ...

对的, Perl的简略写法, 熟悉以后会觉得简单明了, 不熟悉的话即使老程序员也会看的一头雾水
落叶季节,思念季节
把字符串反序然后从左到右隔三位加一个逗号
sub commify
{
  my $num = reverse shift;
  $num =~ s/(\d\d\d)(?=\d)(?!\d*\.)/$1,/g ;
  return scalar reverse $num;
}

这个是支持小数的。