Изучение Rust String содержит: методы и примеры

В Rust тип String широко используется для манипулирования и обработки текста. Одна из распространенных операций — проверка того, содержит ли строка определенную подстроку. В этой статье блога мы рассмотрим различные методы решения этой задачи, приведя попутно примеры кода.

Метод 1: использование метода contains
Тип String в Rust предоставляет встроенный метод contains, который проверяет, содержит ли строка заданную подстроку. Он возвращает логическое значение, указывающее, присутствует ли подстрока. Вот пример:

fn main() {
    let text = String::from("Hello, World!");
    let substring = "World";
    if text.contains(substring) {
        println!("The string contains the substring.");
    } else {
        println!("The string does not contain the substring.");
    }
}

Метод 2: использование метода find.
Другой подход — использование метода find, который возвращает Option<usize>, представляющий начальный индекс подстроки, если она найдена, или Noneв противном случае. Вот пример:

fn main() {
    let text = String::from("Hello, World!");
    let substring = "World";
    if let Some(index) = text.find(substring) {
        println!("The substring starts at index {}.", index);
    } else {
        println!("The substring is not present in the string.");
    }
}

Метод 3: использование регулярных выражений
Крейт регулярных выражений Rust предоставляет мощные инструменты для сопоставления с образцом и манипулирования строками. Вы можете использовать регулярные выражения, чтобы проверить, содержит ли строка определенный шаблон. Вот пример:

use regex::Regex;
fn main() {
    let text = String::from("Hello, World!");
    let pattern = Regex::new(r"World").unwrap();
    if pattern.is_match(&text) {
        println!("The string contains the pattern.");
    } else {
        println!("The string does not contain the pattern.");
    }
}

Метод 4. Использование метода containsс пользовательской логикой.
Если вам нужна более сложная логика сопоставления, вы можете объединить метод containsс замыканиями или пользовательскими функциями. Вот пример:

fn main() {
    let text = String::from("Hello, World!");
    if text.contains(|c: char| c.is_lowercase()) {
        println!("The string contains lowercase characters.");
    } else {
        println!("The string does not contain lowercase characters.");
    }
}

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

Эта статья содержит множество примеров кода и обсуждает различные методы.