Menu
CoddyTech

Conversione delle stringhe

Fa parte della sezione Fondamenti del percorso Rust di Coddy. Lezione 71 di 75.

Per convertire un tipo numerico in una stringa, puoi usare il metodo to_string(). Questo metodo è disponibile per la maggior parte dei tipi di dati, inclusi gli interi e i numeri in virgola mobile.

Per esempio:

let number = 42;
let number_str = number.to_string();
println!("The number as a string: {}", number_str);

In questo esempio, convertiamo una variabile i32 number in una String.

Per convertire una stringa in un tipo numerico, puoi usare il metodo parse(). Questo metodo restituisce un risultato che contiene il numero analizzato oppure un errore se la conversione non riesce.

Per esempio:

let number_str = "123";
let number: i32 = number_str.parse().unwrap();
println!("The number as an i32: {}", number);

In questo esempio, convertiamo una stringa number_str in un i32 usando il metodo parse(). Il metodo unwrap() viene usato per estrarre il valore da Result, supponendo che la conversione abbia esito positivo.

Se la conversione non riesce, il programma andrà in panico (fallirà).

Puoi anche usare parse() con diversi tipi numerici:

let float_str = "3.14";
let float_num: f64 = float_str.parse().unwrap();
println!("The number as an f64: {}", float_num);

In questo caso, convertiamo una stringa float_str in un f64.

challenge icon

Sfida

Facile

Crea una funzione denominata convert_and_print che accetti tre argomenti:

  1. Una sezione di stringa s: &str. È un numero scritto come testo (ad es. "123.67"). Viene usata solo quando to_string è false.
  2. Un numero in virgola mobile n: f64: un numero in virgola mobile. Viene usato solo quando to_string è true.
  3. Un valore booleano to_string: bool: determina quale operazione eseguire.

La funzione deve eseguire le seguenti operazioni:

  • Se to_string è true: converti n in una stringa usando .to_string(), poi conta quanti caratteri numerici contiene (non contare il punto . né il segno meno -). Stampa nel formato:
    Number: [string], Digits: [num of digits]

    Ad esempio, se n = -321.198623, la sua forma stringa è "-321.198623", che contiene 9 caratteri numerici (senza contare - e .).

    Suggerimento: converti n in una stringa, poi usa .len() su di essa e sottrai 1 per ogni . o - che contiene.
  • Se to_string è false: analizza la stringa s come f64 usando .parse(), poi convertila in i32 (che elimina la parte decimale). Stampa nel formato:
    String as number: [number]

    Ad esempio, se s = "123.67231", l'output è String as number: 123.

Chiama convert_and_print due volte:

  1. Prima, con to_string impostato su false. In questo modo viene usata la stringa s e ignorato n.
  2. Seconda, con to_string impostato su true. In questo modo viene usato il numero n e ignorato s.

Provalo tu

use std::io;

fn convert_and_print(s: &str, n: f64, to_string: bool) {
    // Scrivi il tuo codice qui
}

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

    // Chiama convert_and_print con to_string = false
    
    
    // Chiama convert_and_print con to_string = true
    
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Rust online