Cách định dạng chuỗi hoạt động trong Rust
Định dạng chuỗi là một khía cạnh quan trọng của lập trình vì nó cho phép bạn thao tác và hiển thị dữ liệu theo cách có cấu trúc, có thể đọc được. Bạn có thể kiểm soát việc trình bày dữ liệu bằng cách định dạng chuỗi để có trải nghiệm người dùng tốt hơn.
Rust cung cấp một cơ chế mạnh mẽ và linh hoạt để định dạng chuỗi cho phép bạn tạo đầu ra rõ ràng và ngắn gọn, bao gồm chức năng xử lý lỗi, ngày, tháng và số.
Mục Lục
Định dạng chuỗi cơ bản trong Rust
Rust cung cấp chức năng định dạng chuỗi với các loại tích hợp sẵn khác của Rust.
Bạn có thể dùng định dạng! macro để định dạng chuỗi cơ bản trong Rust. Các định dạng! macro cung cấp một cách ngắn gọn và mạnh mẽ để xây dựng các chuỗi được định dạng với các trình giữ chỗ được đặt trong dấu ngoặc nhọn.
fn main() {
let name = "Alice";
let age = 25;
let message = format!("My name is {} and I am {} years old.", name, age);
println!("{}", message);
}
Các tên biến chứa một chuỗi và tuổi biến giữ một số nguyên. Các tin nhắn biến có một chuỗi được định dạng sử dụng định dạng! để thay thế các phần giữ chỗ bằng các giá trị tương ứng, dẫn đến một chuỗi định dạng chứa tên Và tuổi.
Các định dạng! macro hỗ trợ các công cụ xác định định dạng khác nhau cho phép bạn kiểm soát đầu ra.
Dưới đây là cách chỉ định số vị trí thập phân cho số dấu phẩy động, xác định độ rộng của trường và căn chỉnh đầu ra.
fn main() {
let pi = 3.14159;
let formatted_pi = format!("The value of pi is approximately {:.2}", pi);
println!("{}", formatted_pi);
}
Các số Pi biến giữ một giá trị dấu phẩy động; với định dạng định dạng :.2bạn có thể hướng dẫn định dạng! macro để hiển thị số Pi với hai chữ số thập phân.
Các định dạng! macro là một trong nhiều phương pháp định dạng chuỗi với Rust. Tùy thuộc vào yêu cầu của bạn, hãy cân nhắc sử dụng inln! hoặc viết! macro cho đầu ra được định dạng tới bàn điều khiển hoặc các luồng đầu ra khác.
Định dạng giá trị số
Rust cũng cung cấp chức năng định dạng các giá trị số khác nhau, từ số nguyên đến số thực và các loại số khác.
Nói chung, bộ xác định định dạng là nền tảng của định dạng chuỗi trong Rust và bạn sẽ cần bộ xác định phù hợp tùy thuộc vào giá trị số mà bạn muốn định dạng.
Dưới đây là một số định dạng mà Rust cung cấp cho các giá trị số:
Loại số |
trình định dạng |
chức năng |
---|---|---|
số nguyên |
%d hoặc %i |
Định dạng số nguyên bao gồm cả giá trị dương và âm. |
số dấu phẩy động |
%f |
Thích hợp để định dạng số dấu phẩy động, bao gồm cả phần tích phân và phân số. |
Ký hiệu mũ |
%e hoặc %E |
Định dạng số theo ký hiệu khoa học (dạng lũy thừa). |
đại diện bát phân |
%o |
Định dạng số nguyên trong biểu diễn bát phân (cơ số 8). |
đại diện thập lục phân |
%x hoặc %X |
Định dạng số nguyên ở dạng biểu diễn thập lục phân (cơ số 16). |
Ngoài ra, bạn có thể chỉ định phần đệm và căn chỉnh cho các giá trị số. Phần đệm thêm khoảng trắng hoặc số 0 vào một giá trị số được định dạng để đạt được chiều rộng mong muốn. Đệm giúp căn chỉnh các giá trị để trình bày ở dạng bảng hoặc các bố cục được tổ chức trực quan khác. Trước giá trị chiều rộng, bạn có thể chỉ định ký tự đệm, khoảng trắng hoặc số không.
Để căn trái một giá trị, hãy sử dụng – lá cờ. Để căn phải một giá trị, hãy bỏ qua cờ hoặc sử dụng cờ ‘0’ cho phần đệm bằng không.
fn main() {
number = 42
formatted_number = "%10d" % number
print(formatted_number)
}
Giá trị được căn phải trong phạm vi chiều rộng 10 ký tự, dẫn đến tám khoảng trắng ở đầu trước số.
Định dạng chuỗi tùy chỉnh trong Rust
Định dạng chuỗi tùy chỉnh rất quan trọng đối với các hoạt động đòi hỏi khắt khe hơn. Bạn có thể tạo các triển khai định dạng tùy chỉnh cho các loại của mình bằng tính năng tích hợp sẵn của Rust std::fmt mô-đun.
Các std::fmt mô-đun cung cấp các đặc điểm để định dạng đầu ra với nhiều tùy chọn để tùy chỉnh giao diện dữ liệu trong quá trình chuyển đổi chuỗi. Các std::fmt mô-đun cung cấp một Trưng bày Và gỡ lỗi đặc điểm thuận tiện cho các hoạt động định dạng chuỗi.
Đặc điểm hiển thị
Các Trưng bày trait giúp tạo ra đầu ra mà con người có thể đọc được bằng cách xác định cách định dạng một đối tượng bằng {} giữ chỗ trong một chuỗi. Bạn có thể thực hiện các Trưng bày đặc điểm cho các loại tùy chỉnh của bạn bằng cách xác định một phương thức gọi là fmt lấy một trình định dạng làm đối số.
Bộ định dạng cung cấp các phương pháp khác nhau để kiểm soát đầu ra định dạng, như write_str Và write_fmt các phương pháp.
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: 5, y: 10 };
println!("The point is: {}", point);
}
Các Điểm cấu trúc thực hiện Trưng bày đặc điểm. Bên trong fmt phương pháp, các viết! định dạng macro và ghi đầu ra mong muốn vào bộ định dạng bằng {} giữ chỗ.
Đặc điểm gỡ lỗi
Các gỡ lỗi đặc điểm tương tự như Trưng bày đặc điểm, ngoại trừ nó tập trung vào việc tạo đầu ra phù hợp cho mục đích gỡ lỗi và xử lý lỗi. Các gỡ lỗi đặc điểm chủ yếu được sử dụng với {:?} giữ chỗ.
Thực hiện các gỡ lỗi đặc điểm trên các loại tùy chỉnh của bạn là đơn giản. Các gỡ lỗi trait cung cấp một triển khai mặc định dựa trên Trưng bày đặc điểm. Tuy nhiên, bạn có thể ghi đè hành vi mặc định để cung cấp một đại diện gỡ lỗi chuyên dụng.
use std::fmt;
#[derive(Debug)]
struct Person {
name: String,
age: u32,
}
impl fmt::Display for Person {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "Name: {}, Age: {}", self.name, self.age)
}
}
fn main() {
let person = Person {
name: String::from("Alice"),
age: 30,
};
println!("Display: {}", person);
println!("Debug: {:?}", person);
}
Chương trình dẫn xuất các gỡ lỗi đặc điểm cho Người cấu trúc với #[derive(Debug)]. Điều này tự động tạo ra việc triển khai dựa trên các trường cấu trúc.
Macro println in biểu diễn gỡ lỗi bằng gỡ lỗi trình giữ chỗ định dạng để định dạng đầu ra bằng cách sử dụng gỡ lỗi thực hiện.
Rust có một hệ thống kiểu giàu tính năng
Hệ thống kiểu phong phú của Rust đóng một vai trò quan trọng trong việc định dạng chuỗi. Bằng cách tận dụng các thư viện định dạng mạnh mẽ và gõ tĩnh của Rust, bạn có thể viết mã an toàn, hiệu quả trong khi xử lý các tác vụ định dạng và thao tác chuỗi.
Hệ thống loại đảm bảo an toàn thời gian biên dịch và ngăn ngừa các lỗi phổ biến, từ loại không khớp đến các vấn đề về định dạng. Với sự kết hợp giữa hệ thống kiểu của Rust và khả năng định dạng mở rộng của nó, bạn có thể tự tin giải quyết các thách thức về định dạng chuỗi và hưởng lợi từ các đảm bảo về hiệu suất và an toàn của ngôn ngữ.