如何在tcl中将数字用零填充到特定长度?

3

我需要将一个数字填充到特定的长度(比如8位),输入的数字可能是任意长度。

例如:如果输入的数字是123456,我希望将它填充为12345600。

如果我知道所有输入的数字长度都相同(比如6位),我会这样做:

[format "$input_num%02d" 0]

但是由于输入的数字长度可能会不同,我该怎么做呢? 显然,下面这个方法行不通:

set cur_length [expr[llength[split $input_num ""]]
set padding [expr 8 - $cur_length]
set padded_num [format "$input_num%${padding}d" 0]

任何帮助都将不胜感激。
谢谢。
1个回答

7

实际上,这很简单:

format %-08s $input_num

一个数字也可以像字符串一样左对齐。相关文档: format

如果我想在前面添加而不是在末尾添加怎么办?例如:如何获得00123456? - Tcl_newbie
@Tcl_newbie:只需删除破折号即可。 - Peter Lewerin
如果您不想硬编码“8”,那么可以使用set width 10; format {%-0*s} $width $input_num -- 使用*表示将字段宽度作为参数传递。 - glenn jackman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接