Viết hoa một chuỗi

Rust:
Viết hoa một chuỗi

Làm thế nào:

Rust không bao gồm một phương thức sẵn có để viết hoa từng từ trong một chuỗi, nhưng chúng ta có thể dễ dàng triển khai phương pháp của riêng mình bằng cách sử dụng phương thức to_ascii_uppercase cho các ký tự đơn và lặp qua các từ.

fn capitalize_words(s: &str) -> String {
    s.split_whitespace()
        .map(|word| {
            let mut chars = word.chars();
            match chars.next() {
                None => String::new(),
                Some(first) => first.to_ascii_uppercase().to_string() + chars.as_str(),
            }
        })
        .collect::<Vec<_>>()
        .join(" ")
}

fn main() {
    let sentence = "hello world";
    println!("{}", capitalize_words(sentence));
}

Kết quả mẫu:

Hello World

Sâu hơn:

Theo truyền thống, Rust đã ưu tiên một thư viện chuẩn có kích thước tối thiểu, với nhiều hàm tiện ích được cung cấp bởi cộng đồng thông qua các crates. Đối với việc viết hoa chuỗi, bạn có thể sử dụng crate heck để chuyển đổi trường hợp nâng cao hơn, như CamelCase, snake_case và hơn thế nữa.

Việc viết hoa một chuỗi có thể gặp khó khăn với các ký tự unicode. Kiểu char của Rust là một giá trị vô hình Unicode, cho phép xử lý đúng đắn hầu hết các ký tự. Khi xử lý với chuẩn hoá Unicode đầy đủ, các thư viện nâng cao hơn, như unicode-segmentation, nên được xem xét cho các thao tác chú ý tới các cụm grapheme.

Về mặt thực hiện, hàm capitalize_words của chúng tôi không phải là hiệu suất cao bởi vì nó cấp phát một String mới cho mỗi từ. Trong các ứng dụng đòi hỏi hiệu suất cao, sẽ có lợi khi tối ưu hóa thao tác chuỗi để tránh cấp phát bộ nhớ quá mức.

Xem thêm: