在我向用户显示之前,我正在寻找0-pad字符串,例如
let x = 1234;
println!("{:06}", x); // "001234"
Run Code Online (Sandbox Code Playgroud)
但是,我希望输出字符串的长度是可变的,例如,它可以通过用户的命令行参数来设置:
let x = 1234;
let width = 6;
println!("{:0*}", width, x); //fails to compile
// error: invalid format string: expected `'}'`, found `'*'`
Run Code Online (Sandbox Code Playgroud)
与精度不同,0-padding似乎不支持*
指定宽度.
我不是在寻找涉及手动填充的解决方案,因为重新实现部分内容似乎很尴尬std::fmt
.
Sim*_*ead 15
您可以将:0_
格式说明符与变量一起使用:
println!("{:0width$}", x, width = width); // prints 001234
Run Code Online (Sandbox Code Playgroud)
同样,如果width <= 4
,它只是打印1234
.如果width = 60
,它打印:
000000000000000000000000000000000000000000000000000000001234
Run Code Online (Sandbox Code Playgroud)
格式参数也支持序数,因此这也有效:
println!("{:01$}", x, width);
Run Code Online (Sandbox Code Playgroud)
std :: fmt的文档概述了print_!
宏支持的各种参数和修饰符.
归档时间: |
|
查看次数: |
2335 次 |
最近记录: |