1 基础占位符
arduino
println!("Hello, {}!", "world");
输出Hello, world!
2 数字格式化
arduino
println!("{:04}", 42);
输出0042
{:04}
指定宽度为 4,不足部分用0
填充(常用于补全日期、时间等)。
3 Debug 格式化
rust
#[derive(Debug)]
struct User {
name: String,
age: u8
}
fn main() {
let user = User {
name : String::from("123"),
age : 10
};
println!("{:?}", user);
println!("{:#?}", user);
}
{:#?} 输出
js
User {
name: "123",
age: 10,
}
{:?} 输出
js
User { name: "123", age: 10 }
{:?}
使用类型的Debug
实现格式化(适用于元组、结构体等)。{:#?}
是美化版的Debug
输出,常用于复杂结构的多行显示。
4 命名参数
ini
println!("{password} is {value}", password = "password",value=4);
输出 password is 4
5 变量插值
ini
let world = "world";
let name = "milk";
println!("Hello {world}!,My name is {name}!");
- 直接在
{}
中使用变量名(无需显式传递参数),类似 Python 的f-string
。
6 多参数与位置
arduino
println!("My name is {} ,My Age is {}", "Milk", 18)
输出 My name is Milk ,My Age is 18
- 多个
{}
按顺序对应后面的参数
7 浮点数控制位数
arduino
println!("浮点数控制位数 : {:.2}",3.1415926)
输出3.24
- {:.2}保留两位小数
8 输出对应的16进制
arduino
println!("输出对应的16进制 : {:x}",255)
输出ff
9 输出对应的二进制
arduino
println!("输出对应的16进制 : {:b}",8)
输出1000
10 显示索引
arduino
println!("显示索引 : {1} {} {} {0}",10,20)
输出 显示索引 : 20 10 20 10
- {}中指定下标的为显示索引,按索引从后面的参数中取,{1}取得就是第二个参数 20
- {}中不指定下标的是普通占位符,按顺序取参数
11 格式化字符串中的宽度参数
arduino
println!("Hello {:5}!", "x"); // 输出: "Hello x !"
{:5}
表示将参数x
格式化为宽度为 5 的字符串,不足部分用空格填充。- 最终输出中,
x
右侧有 4 个空格(总宽度为 5)。
arduino
println!("Hello {:1$}!", "x", 5); // 输出: "Hello x !"
{:1$}
中的1$
表示使用 ** 第二个参数(索引 1)** 作为宽度值,即5
。- 等价于
{:5}
,但宽度值从参数列表动态获取。
arduino
println!("Hello {1:0$}!", 5, "x"); // 输出: "Hello x !"
{1:0$}
中的1
表示 ** 第二个参数(索引 1)** 是要格式化的值(即"x"
)。0$
表示使用 ** 第一个参数(索引 0)** 作为宽度值(即5
)。- 整体效果:将
"x"
格式化为宽度为 5 的字符串。
12 字符串对齐与填充的高级控制
12.1 左对齐
arduino
println!("Hello {:<5}!", "x");
输出
Hello x !
{:<5}
:显式指定左对齐 (<
),宽度为 5。- 行为 :字符串
"x"
居左,右侧补 4 个空格(总宽度 5)。
12.2 自定义填充符
arduino
println!("Hello {:-<5}!", "x")
输出
lua
Hello x----!
{:-<5}
:左对齐(<
),用-
填充剩余宽度。- 行为 :字符串
"x"
居左,右侧补 4 个-
。
12.3 居中对齐
arduino
println!("Hello {:^5}!", "x")
输出
Hello x !
12.4 右对齐
arduino
println!("Hello {:>5}!", "x");
输出
Hello x!