在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2795|回复: 8

[求助] perl 字符补齐

[复制链接]
发表于 2016-9-28 09:00:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
$a = "abc";如果要将 $a 变为8位字符,左对齐,不足用- 补齐
结果想这样  :   abc-----
不是直接加5个-,因为$a 长度未知,该怎么弄?
谢谢!
发表于 2016-9-28 09:07:58 | 显示全部楼层
回复 1# shinefuture


   要是print用的话就要用格式输出,然后用$~调用格式打印。
 楼主| 发表于 2016-9-28 09:56:02 | 显示全部楼层
回复 2# mndzjsjczex

能具体点吗?  printf "%-8s”,$a 是可以用空格补齐但不知道怎么用 - 补齐
发表于 2016-9-28 10:42:23 | 显示全部楼层
回复 3# shinefuture


   没有用过printf,因为perldoc上面说printf没有print效率高。
   建议学习一下“格式化输出”,我不记清了,大概是这样

  



  1. format f_name =
  2. @<<<<<<<<~
  3. $a
  4. .

  5. open fh, ">file_name";
  6. select "f_name";
  7. write fh;


复制代码
 楼主| 发表于 2016-9-28 11:32:50 | 显示全部楼层
回复 4# mndzjsjczex

这下面4行是什么意思?第一次见这种写法
format f_name =
@<<<<<<<<~
$a
.

不需要写到文件里,只要显示就可以了
open fh, ">file_name";
select "f_name";
write fh;

谢谢!
发表于 2016-9-28 13:40:39 | 显示全部楼层
本帖最后由 mndzjsjczex 于 2016-9-28 13:47 编辑

回复 5# shinefuture


   这个就是格式化输出昂,具体我忘了,你自己查吧。
   你要是想不写文件,输出到terminal上就直接
  



  1. $~ = "f_name";
  2. write STDOUT;


复制代码

   就好了……   抱歉之前写错了select后面应该是句柄,还有忘了写$~ = "f_name";
发表于 2016-10-9 19:15:45 | 显示全部楼层
本帖最后由 chenfengrugao 于 2016-10-10 19:37 编辑

print "$a"  .    "-"  x  (8-length($a));
智能点可以写个函数
sub align_left_n {
my $str = shift;
my $width = shift;
my $ch = shift;

print "$str";
print "$ch" x ($width -  length($str));
}
 楼主| 发表于 2016-10-10 16:15:46 | 显示全部楼层
发表于 2016-10-11 09:06:38 | 显示全部楼层
学习了,谢谢大牛
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-19 04:19 , Processed in 0.021475 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表