Преобразование строки в верхний регистр

Rust:
Преобразование строки в верхний регистр

Как это сделать:

В Rust нет встроенного метода для преобразования каждого слова строки в заглавные буквы, но мы можем легко реализовать свой собственный, используя метод to_ascii_uppercase для отдельных символов и пройдясь циклом по словам.

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));
}

Пример вывода:

Hello World

Подробнее:

Исторически Rust придавал значение минимализму стандартной библиотеки, с многими вспомогательными функциями, предоставляемыми сообществом через крейты. Для преобразования регистра строк вы можете использовать крейт heck для более продвинутых преобразований регистра, таких как CamelCase, snake_case и других.

Преобразование строки в заглавные буквы может быть сложным с символами юникода. Тип char в Rust представляет собой скалярное значение Unicode, что позволяет корректно обрабатывать большинство символов. При работе с полной нормализацией Unicode следует рассмотреть использование более продвинутых библиотек, таких как unicode-segmentation, для операций, учитывающих кластеры графем.

С точки зрения реализации, наша функция capitalize_words не является высокопроизводительной, так как она выделяет новую строку для каждого слова. В приложениях, требующих высокой производительности, было бы полезно оптимизировать манипуляции со строками, чтобы избежать чрезмерных выделений памяти.

Смотрите также: