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 liczb 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 niepowodzeniem).
Możesz także 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 ciągu 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: liczba zmiennoprzecinkowa. 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: przekonwertujnna ciąg znaków za pomocą.to_string(), a następnie policz, ile zawiera znaków będących cyframi (nie licz kropki.ani znaku minus-). Wypisz wynik w formacie:Number: [string], Digits: [num of digits]
Na przykład, jeślin = -321.198623, jego postać tekstowa to"-321.198623", która zawiera 9 znaków będących cyframi (bez-i.).
Podpowiedź: przekonwertujnna ciąg 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 ciąg znakówsjakof64za pomocą.parse(), a następnie rzutuj go nai32(co usuwa część dziesiętną). Wypisz wynik 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 parametrem
to_stringustawionym nafalse. Wykorzystuje to ciąg znakówsi ignorujen. - Następnie z parametrem
to_stringustawionym 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