参考Stack Overflow示例编写Rust控制台表格代码,格式为何异常?
控制台表格格式化问题排查
我参考Stack Overflow上的《How to print well-formatted tables to the console?》答案编写Rust代码,尝试在控制台打印规整表格,但格式不符合预期。代码如下:
fn main() { println!( "{0: <15} | {1: <15} | {2: <50}", "type", "human readable", "uuid id" ); let characters = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '\n', ]; for c in characters { println!( "{0:<15} | {1:<15} | {2:<50}", "char", c.escape_debug(), "asdfasdfdf" ); } }
问题原因及解决办法
1. escape_debug()的输出格式导致视觉对齐感不足
c.escape_debug()会按照Rust调试格式输出字符:普通字符如'a'会输出'a'(带单引号,共3个字符),换行符'\n'会输出'\n'(带单引号,共4个字符)。虽然你设置了<15的格式化宽度,系统会自动补空格到15位,但不同字符的输出长度差异会导致视觉上第二列内容显得不对齐。
如果需要不带单引号的转义输出,改用c.escape_default()即可,它会输出a、\n这类格式,长度更统一(普通字符占1位,转义字符占2位)。
2. 缺少表头与内容的分隔线
参考的Stack Overflow答案通常会包含表头下方的分隔线(由-和|组成),你没有添加这一行,导致表格没有规整的视觉分隔感,看起来不符合预期。
修正后的代码
fn main() { // 打印表头 println!( "{0:<15} | {1:<15} | {2:<50}", "type", "human readable", "uuid id" ); // 添加表头分隔线 println!("{0:-<15}-|{1:-<15}-|{2:-<50}", "", "", ""); let characters = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '\n', ]; for c in characters { println!( "{0:<15} | {1:<15} | {2:<50}", "char", c.escape_default(), // 替换为escape_default "asdfasdfdf" ); } }
内容的提问来源于stack exchange,提问作者l3utterfly
相关产品推荐
相关产品推荐

