Metody ciągów znaków
Część sekcji Podstawy ścieżki Rust w Coddy. Lekcja 69 z 75.
Rust oferuje bogaty zestaw wbudowanych metod łańcuchów znaków, które umożliwiają wykonywanie różnych operacji na łańcuchach. Metody te pozwalają na manipulowanie, wyszukiwanie i przekształcanie łańcuchów znaków. Oto kilka często używanych metod łańcuchów znaków:
len(): Zwraca liczbę bajtów w ciągu znaków (równą liczbie znaków w tekście ASCII).chars().nth(index): Zwraca znak o podanym indeksie (liczonym od 0). Ta metoda zwraca wartość typuOption<char>: specjalny typ Rust, który reprezentuje albo wartość Some (jeśli indeks istnieje), albo None (jeśli nie istnieje). Wywołanie na nim.unwrap()bezpośrednio wyodrębnia wartość znaku.
contains(substring): Sprawdza, czy ciąg znaków zawiera określony podciąg.starts_with(prefix): Sprawdza, czy ciąg znaków zaczyna się od określonego prefiksu.ends_with(suffix): Sprawdza, czy ciąg znaków kończy się określonym sufiksem.
to_uppercase(): Zamienia ciąg znaków na wielkie litery.to_lowercase(): Zamienia ciąg znaków na małe litery.trim(): Usuwa białe znaki z początku i końca ciągu znaków.
Na przykład:
let message = "Hello, World!";
let length = message.len();
let firstChar = message.chars().nth(0).unwrap();
let contains_world = message.contains("World");
let starts_with_hello = message.starts_with("Hello");
let lower = message.to_lowercase();Wyzwanie
ŁatwyUtwórz metodę o nazwie analyzeString, która przyjmuje ciąg znaków jako dane wejściowe i wypisuje poniższą analizę, używając metod ciągów znaków:
- Długość ciągu znaków
- Znak na indeksie 4
- Czy ciąg znaków zawiera podciąg "Rust"
- Czy ciąg znaków kończy się kropką
. - Ciąg znaków zamieniony na wielkie litery
Wynik powinien mieć dokładnie taki format:
Length: [The length]
Char at 4: [The Char at index 4]
Contains Rust: [true or false]
Ends with dot: [true or false]
Uppercase: [The string in uppercase]Uwaga: Załóż, że ciąg wejściowy będzie wystarczająco długi, aby można było wykonać wszystkie operacje.
Spróbuj swoich sił
use std::io;
fn analyze_string(s: &str) {
// Wpisz tutaj swój kod
}
fn main() {
let mut message = String::new();
io::stdin().read_line(&mut message).unwrap();
let message = message.trim();
analyze_string(message);
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory, część 1
Operatory arytmetyczneOperator moduloSkrócone operacje arytmetyczneOperatory porównaniaPorównywanie ciągów znaków7Podstawowe wejście i wyjście
Wyświetlanie w konsoliOdczytywanie danych od użytkownikaPowtórka – do 120Powtórka – prawda czy fałsz5Operatory, część 2
Operatory logiczne, część 1Operatory logiczne, część 2Powtórka — prosta logikaOperatory logiczne, część 311Funkcje
Deklarowanie funkcjiParametry i argumentyWartości zwracaneWiele wartości zwracanychPowtórka – funkcja SigmaPowtórka – funkcja walidująca14Iterowanie po tablicach
Przewodnik po zakresachUlepszona pętla forPożyczanie w pętliTypowe operacje na tablicach3Zmienne – część 2
Deklarowanie typuKonwencje nazewnictwaWnioskowanie o typiePodsumowanie – inicjalizacja zmiennychRzutowanie typów9Pętle
Pętla for dla sekwencjiPętla whileInstrukcja breakInstrukcja continuePętle zagnieżdżoneEtykiety pętliPętla nieskończonaPodsumowanie — dynamiczne dane wejściowe12Podstawy tablic
Deklarowanie tablicTablica jako parametrDostęp do elementówModyfikowanie tablicPodsumowanie — czytelny wydruk tablicy15Operacje na ciągach znaków
Metody ciągów znakówMakro format!Konwersja ciągów znakówPowtórka — formatowaniePoćwicz samodzielnie: Kompilator Rust online