在Rust编程语言中,fmt::Formatter
是用于格式化输出的核心类型之一。你可以通过实现 fmt::Display
或者 fmt::Debug
trait 来控制类型的字符串表示形式。格式化的字符串替换通常通过大括号 {}
来表示,并且你可以在大括号中指定格式选项。
基本用法:
use std::fmt;
struct Point {
x: i32,
y: i32,
}
impl fmt::Display for Point {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "({}, {})", self.x, self.y)
}
}
fn main() {
let point = Point { x: 10, y: 20 };
println!("The point is: {}", point);
}
上述代码中,实现了 fmt::Display
trait 来定义 Point
的字符串格式。
常用格式选项:
- 填充与对齐: 你可以通过指定
width
和align
来控制输出的宽度和对齐方式。 -
println!("{:>10}", 42); // 输出 " 42"
println!("{:<10}", 42); // 输出 "42 "
println!("{:^10}", 42); // 输出 " 42 "
- 数字格式:
- 进制:
{}
可以用来以十进制输出整数,而{:#x}
、{:#X}
、{:#o}
、{:#b}
则分别以十六进制、大写十六进制、八进制、二进制输出。浮点数:{:.2}
可以指定小数位数。
println!("{:x}", 255); // 输出 "ff"
println!("{:.2}", 3.1415); // 输出 "3.14"
- 进制:
- 字符串格式化: 你可以使用
{}
替换为指定的字符串。println!("Hello, {}!", "world");
- 调试格式: 使用
{:?}
或{:#?}
输出对象的调试信息。rust let arr = [1, 2, 3];
println!("{:?}", arr); // 输出 "[1, 2, 3]"
高级用法:
- 精确控制: 在实现
fmt::Display
或fmt::Debug
时,你可以通过Formatter
对象来控制格式化的精确度、填充、宽度等。 impl fmt::Display for Point {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "({:>width$}, {:>width$})",
self.x, self.y, width = 3)
}
}
上述例子将会输出 ( 10, 20)
,其中数字前面会自动填充空格。
希望这些示例可以帮助你更好地理解 fmt::Formatter
的字符串替换格式。
发表回复
要发表评论,您必须先登录。