Konwersja ciągów znaków
Część sekcji Podstawy ścieżki Rust w Coddy. Lekcja 71 z 75.
Aby przekonwertować typ liczbowy na ciąg znaków, możesz użyć metody to_string(). Ta metoda jest dostępna dla większości typów danych, w tym liczb całkowitych i zmiennoprzecinkowych.
Na przykład:
let number = 42;
let number_str = number.to_string();
println!("The number as a string: {}", number_str);W tym przykładzie konwertujemy zmienną number typu i32 na String.
Aby przekonwertować ciąg znaków na typ liczbowy, możesz użyć metody parse(). Ta metoda zwraca wynik zawierający albo sparsowaną liczbę, albo błąd, jeśli konwersja się nie powiedzie.
Na przykład:
let number_str = "123";
let number: i32 = number_str.parse().unwrap();
println!("The number as an i32: {}", number);W tym przykładzie konwertujemy ciąg znaków number_str na i32 za pomocą metody parse(). Metoda unwrap() służy do wyodrębnienia wartości z Result, przy założeniu, że konwersja się powiedzie.
Jeśli konwersja się nie powiedzie, program wywoła panikę (zakończy działanie błędem).
Możesz też użyć parse() z różnymi typami liczbowymi:
let float_str = "3.14";
let float_num: f64 = float_str.parse().unwrap();
println!("The number as an f64: {}", float_num);W tym przypadku konwertujemy ciąg znaków float_str na f64.
Wyzwanie
ŁatwyUtwórz funkcję o nazwie convert_and_print, która przyjmuje trzy argumenty:
- Wycinek łańcucha znaków
s: &str. To liczba zapisana jako tekst (np."123.67"). Jest używany tylko wtedy, gdyto_stringma wartośćfalse. - Liczba zmiennoprzecinkowa
n: f64. Jest używana tylko wtedy, gdyto_stringma wartośćtrue. - Wartość logiczna
to_string: bool: określa, którą operację wykonać.
Funkcja powinna wykonać następujące operacje:
- Jeśli
to_stringma wartośćtrue: zamieńnna łańcuch znaków za pomocą.to_string(), a następnie policz, ile zawiera znaków cyfr (nie licz kropki.ani znaku minus-). Wypisz w formacie:Number: [string], Digits: [num of digits]
Na przykład, jeślin = -321.198623, jego postać łańcuchowa to"-321.198623", która zawiera 9 znaków cyfr (bez-i.).
Podpowiedź: zamieńnna łańcuch znaków, a następnie użyj na nim.len()i odejmij 1 za każdą zawartą w nim.lub-. - Jeśli
to_stringma wartośćfalse: sparsuj łańcuchsjakof64za pomocą.parse(), a następnie rzutuj go nai32(co usuwa część dziesiętną). Wypisz w formacie:String as number: [number]
Na przykład, jeślis = "123.67231", wynikiem jestString as number: 123.
Wywołaj convert_and_print dwa razy:
- Najpierw z wartością
to_stringustawioną nafalse. Wykorzystuje to łańcuchsi ignorujen. - Następnie z wartością
to_stringustawioną natrue. Wykorzystuje to liczbęni ignorujes.
Spróbuj swoich sił
use std::io;
fn convert_and_print(s: &str, n: f64, to_string: bool) {
// Wpisz tutaj swój kod
}
fn main() {
let mut input_number_str = String::new();
let mut input_n = String::new();
io::stdin().read_line(&mut input_number_str).unwrap();
io::stdin().read_line(&mut input_n).unwrap();
let n: f64 = input_n.trim().parse().unwrap();
let number_str = input_number_str.trim();
// Wywołaj convert_and_print z to_string = false
// Wywołaj convert_and_print z to_string = true
}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