Menu
Coddy logo textTech

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, stiamo convertendo 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.

Ad 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 riesca.

Se la conversione non riesce, il programma andrà in panic (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 accetta tre argomenti:

  1. Una slice di stringa s: &str. È un numero scritto come testo (ad es. "123.67"). Viene usata solo quando to_string è false.
  2. Un numero decimale n: f64: un numero a virgola mobile. Viene usato solo quando to_string è true.
  3. Un 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 . o il segno meno -). Stampa nel formato:
    Number: [string], Digits: [num of digits]

    Per esempio, se n = -321.198623, la sua rappresentazione in 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 un f64 usando .parse(), poi convertila in i32 (che elimina la parte decimale). Stampa nel formato:
    String as number: [number]

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

Chiama convert_and_print due volte:

  1. La prima volta, con to_string impostato su false. Questo usa la stringa s e ignora n.
  2. La seconda volta, con to_string impostato su true. Questo usa il numero n e ignora 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