Scopri come formattare i dati delle stringhe per una presentazione perfetta.
La formattazione delle stringhe è un aspetto cruciale della programmazione poiché consente di manipolare e visualizzare i dati in modo leggibile e strutturato. Puoi controllare la presentazione dei dati formattando le stringhe per una migliore esperienza utente.
Rust fornisce un meccanismo potente e flessibile per la formattazione delle stringhe che ti consente di creare un output chiaro e conciso, incluse funzionalità numeriche, di data, ora e gestione degli errori.
Formattazione di base delle stringhe in Rust
Rust fornisce funzionalità per la formattazione di stringhe con altri Tipi incorporati ruggine.
Puoi usare il formato! macro per la formattazione di base delle stringhe in Rust. IL formato! macro fornisce un modo conciso e potente per costruire stringhe formattate con segnaposti racchiusi tra parentesi graffe.
fnprincipale() {
permettere nome = "Alice";
permettere età = 25;
permettere messaggio = formato!("Mi chiamo {} e ho {} anni.", nome età);
stampa!("{}", Messaggio);
}
IL nome la variabile contiene una stringa e la età la variabile contiene un numero intero. IL Messaggio variabile ha una stringa formattata che utilizza formato! per sostituire i segnaposto con i valori corrispondenti, risultando in una stringa di formato contenente il nome E età.
IL formato! macro supporta vari identificatori di formato che consentono di controllare l'output.
Ecco come specificare il numero di cifre decimali per i numeri in virgola mobile, definire la larghezza dei campi e allineare l'output.
fnprincipale() {
permettere pi = 3.14159;
permettere formatted_pi = formato!("Il valore di pi greco è approssimativamente {:.2}", pi);
stampa!("{}", formattato_pi); // stampa 3.14
}
IL pi la variabile contiene un valore in virgola mobile; con l'identificatore di formato :.2, puoi istruire il formato! macro da visualizzare pi con due cifre decimali.
IL formato! macro è uno dei molti metodi di formattazione delle stringhe con Rust. A seconda delle tue esigenze, considera l'utilizzo di stampa! O scrivere! macro per l'output formattato alla console o altri flussi di output.
Formattazione di valori numerici
Rust fornisce anche funzionalità per la formattazione di vari valori numerici, da interi a float e altri tipi numerici.
Generalmente, gli identificatori di formato sono la base della formattazione delle stringhe in Rust, e avrai bisogno dell'identificatore giusto a seconda del valore numerico che vuoi formattare.
Ecco alcuni degli identificatori di formato forniti da Rust per i valori numerici:
Tipo numerico |
Formattatore |
Funzionalità |
---|---|---|
Interi |
%d o %i |
Formatta i numeri interi inclusi i valori positivi e negativi. |
Numeri in virgola mobile |
%F |
Adatto per la formattazione di numeri in virgola mobile, comprese le parti integrali e frazionarie. |
Notazione esponenziale |
%e o %E |
Formatta i numeri in notazione scientifica (forma esponenziale). |
Rappresentazione ottale |
%o |
Formatta i numeri interi in rappresentazione ottale (base 8). |
Rappresentazione esadecimale |
%x o %X |
Formatta i numeri interi in rappresentazione esadecimale (base 16). |
Inoltre, puoi specificare la spaziatura interna e l'allineamento per i valori numerici. Il riempimento aggiunge spazi o zeri a un valore numerico formattato per ottenere la larghezza desiderata. La spaziatura interna aiuta ad allineare i valori per la presentazione in formato tabulare o altri layout organizzati visivamente. Prima del valore della larghezza, puoi specificare il carattere di riempimento, uno spazio o zero.
Per allineare a sinistra un valore, utilizzare il - bandiera. Per allineare a destra un valore, ometti il flag o usa il flag '0' per il riempimento zero.
fnprincipale() {
numero = 42
numero_formattato = "%10d" % numero
stampa (numero_formattato)
}
Il valore è allineato a destra entro una larghezza di 10 caratteri, risultando in otto spazi iniziali prima del numero.
Formattazione personalizzata delle stringhe in Rust
La formattazione personalizzata delle stringhe è importante per le operazioni più impegnative. Puoi creare implementazioni di formattazione personalizzate per i tuoi tipi con il built-in di Rust std:: fmt modulo.
IL std:: fmt Il modulo fornisce tratti per la formattazione dell'output con un'ampia gamma di opzioni per personalizzare l'aspetto dei dati durante il processo di conversione delle stringhe. IL std:: fmt modulo fornisce a Schermo E Debug tratto utile per le operazioni di formattazione delle stringhe.
Il tratto di visualizzazione
IL Schermo trait aiuta a produrre un output leggibile dall'uomo definendo come un oggetto dovrebbe essere formattato con il {} segnaposto in una stringa. Puoi implementare il Schermo tratto per il tuo tipi personalizzati definendo un metodo chiamato fmt che accetta un formattatore come argomento.
Il formattatore fornisce vari metodi per controllare l'output del formato, come il formato write_str E write_fmt metodi.
utilizzo std:: fmt;
// Definisci una struttura chiamata `Point`
structPunto {
X: i32,
e: i32,
}// Implementa il tratto `Display` per `Point`
imp fmt:: Visualizza per Punto {
fnfmt(&se stesso, F: &mut fmt:: Formattatore<'_>) -> FM::Risultato {
// Formatta la struttura `Point` come "(x, y)"
scrivere!(F, "({}, {})", se stesso.X, se stesso.y)
}
}fnprincipale() {
// Crea una nuova istanza `Point`
permettere punto = punto { x: 5, io: 10 };
// Stampa la struttura `Point` usando la formattazione `Display`
stampa!("Il punto è: {}", punto);
}
IL Punto struct implementa il Schermo tratto. Dentro il fmt metodo, il scrivere! formati macro e scrivere l'output desiderato nel formattatore con l'estensione {} segnaposto.
Il tratto di debug
IL Debug tratto è simile al Schermo tratto, tranne che si concentra sulla produzione di output adatto per il debug e gestione degli errori scopi. IL Debug tratto è utilizzato principalmente con il {:?} segnaposto.
Implementazione del Debug tratto sui tuoi tipi personalizzati è semplice. IL Debug trait fornisce un'implementazione predefinita basata su Schermo tratto. Tuttavia, puoi ignorare il comportamento predefinito per fornire una rappresentazione di debug specializzata.
utilizzo std:: fmt;
// Definisci una struttura chiamata `Person`
#[derivare (debug)]
structPersona {
nome: Corda,
età: u32,
}// Implementa il tratto `Display` per `Person`
imp fmt:: Visualizza per Persona {
fnfmt(&se stesso, F: &mut fmt:: Formattatore) -> fmt::Risultato {
// Formatta la struttura `Person` come una stringa leggibile dall'uomo
scrivere!(F, "Nome età: {}", se stesso.nome, se stesso.età)
}
}fnprincipale() {
// Crea una nuova istanza `Person`
permettere persona = Persona {
nome: Corda::da("Alice"),
età: 30,
};// Stampa la struttura `Person` usando la formattazione `Display`
stampa!("Schermo: {}", persona);
// Stampa la struttura `Person` usando la formattazione `Debug`
stampa!("Debug: {:?}", persona);
}
Il programma deriva il file Debug tratto per il Persona struct con #[derivare (debug)]. Questo genera automaticamente l'implementazione in base ai campi struct.
La macro println stampa la rappresentazione di debug con l'estensione Debug segnaposto di formattazione per la formattazione dell'output utilizzando il formato Debug implementazione.
Rust ha un sistema di tipi ricco di funzionalità
Il ricco sistema di caratteri di Rust gioca un ruolo cruciale nella formattazione delle stringhe. Sfruttando la tipizzazione statica e le potenti librerie di formattazione di Rust, puoi scrivere codice sicuro ed efficiente mentre gestisci le attività di formattazione e manipolazione delle stringhe.
Il sistema di tipi garantisce la sicurezza in fase di compilazione e previene gli errori comuni, dalle mancate corrispondenze di tipo ai problemi degli identificatori di formato. Con la combinazione del sistema di caratteri di Rust e le sue estese capacità di formattazione, puoi farlo affronta con sicurezza le sfide di formattazione delle stringhe e beneficia delle prestazioni e della sicurezza del linguaggio garanzie.