Hvordan strengformatering fungerer i rust

Hvordan strengformatering fungerer i rust
Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Strengformatering er et avgjørende aspekt ved programmering siden det lar deg manipulere og vise data på en lesbar, strukturert måte. Du kan kontrollere datapresentasjonen ved å formatere strenger for en bedre brukeropplevelse.





Rust gir en kraftig og fleksibel mekanisme for strengformatering som gir deg mulighet til å lage klare og konsise utdata, inkludert numerisk, dato, klokkeslett og feilhåndteringsfunksjonalitet.





MAKEUSE AV DAGENS VIDEO RULL FOR Å FORTSETTE MED INNHOLD

Grunnleggende strengformatering i Rust

Rust gir funksjonalitet for formatering av strenger med andre Rust innebygde typer .





Du kan bruke format! makro for grunnleggende strengformatering i Rust. De format! makro gir en kortfattet og kraftig måte å konstruere formaterte strenger med plassholdere omsluttet av krøllete klammeparenteser.

 fn main() { 
    let name = "Alice";
    let age = 25;
    let message = format!("My name is {} and I am {} years old.", name, age);
    println!("{}", message);
}

De Navn variabelen inneholder en streng, og alder variabel inneholder et heltall. De beskjed variabelen har en formatert streng som bruker format! for å erstatte plassholderne med tilsvarende verdier, noe som resulterer i en formatstreng som inneholder Navn og alder .



  resultat av grunnleggende strengformatering

De format! makro støtter ulike formatspesifikasjoner som lar deg kontrollere utdataene.

Slik angir du antall desimaler for flyttall, definerer bredden på feltene og justerer utdataene.





 fn main() { 
    let pi = 3.14159;
    let formatted_pi = format!("The value of pi is approximately {:.2}", pi);
    println!("{}", formatted_pi); // prints 3.14
}

De pi variabelen har en flyttallsverdi; med formatspesifikasjonen :.2 , kan du instruere format! makro som skal vises pi med to desimaler.

De format! makro er en av de mange metodene for strengformatering med Rust. Avhengig av dine behov, vurder å bruke println! eller skrive! makro for formatert utdata til konsollen eller andre utdatastrømmer.





Formatering av numeriske verdier

Rust gir også funksjonalitet for formatering av ulike numeriske verdier, fra heltall til flyter og andre numeriske typer.

Vanligvis er formatspesifikasjoner grunnlaget for strengformatering i Rust, og du trenger den riktige spesifikasjonen avhengig av den numeriske verdien du vil formatere.

Her er noen av formatspesifikasjonene Rust gir for numeriske verdier:

hvilken leveringstjeneste betaler mest

Heltall

%d eller %i

Formaterer heltall inkludert positive og negative verdier.

Flytende tall

%f

Egnet for formatering av flyttall, inkludert integrerte deler og brøkdeler.

Eksponentiell notasjon

%e eller %E

Formaterer tall i vitenskapelig notasjon (eksponentiell form).

Oktal representasjon

%O

Formaterer heltall i oktal representasjon (grunnlag 8).

Heksadesimal representasjon

%x eller %X

Formaterer heltall i heksadesimal representasjon (grunnlag 16).

I tillegg kan du spesifisere utfylling og justering for numeriske verdier. Utfyllingen legger til mellomrom eller nuller til en formatert numerisk verdi for å oppnå ønsket bredde. Utfylling hjelper til med å justere verdier for presentasjon i tabellform eller andre visuelt organiserte oppsett. Før breddeverdien kan du spesifisere utfyllingstegnet, enten et mellomrom eller null.

For å venstrejustere en verdi, bruk - flagg. For å høyrejustere en verdi, utelate flagget eller bruk '0'-flagget for nullutfylling.

 fn main() { 
    number = 42
    formatted_number = "%10d" % number
    print(formatted_number)
}

Verdien er høyrejustert innenfor en bredde på 10 tegn, noe som resulterer i åtte mellomrom foran tallet.

Egendefinert strengformatering i rust

Tilpasset strengformatering er viktig for mer krevende operasjoner. Du kan lage tilpassede formateringsimplementeringer for typene dine med Rusts innebygde std::fmt modul.

De std::fmt modulen gir egenskaper for formatering av utdata med et bredt spekter av alternativer for å tilpasse datautseendet under strengkonverteringsprosessen. De std::fmt modul gir en Vise og Feilsøk egenskap som er nyttig for strengformateringsoperasjoner.

Visningstrekket

De Vise egenskap bidrar til å produsere lesbare utdata ved å definere hvordan et objekt skal formateres med {} plassholder i en streng. Du kan implementere Vise egenskap for din tilpassede typer ved å definere en metode kalt fmt som tar en formater som argument.

Formateringsverktøyet gir forskjellige metoder for å kontrollere formatutdata, for eksempel skrive_str og skrive_fmt metoder.

 use std::fmt; 

// Define a struct named `Point`
struct Point {
    x: i32,
    y: i32,
}

// Implement the `Display` trait for `Point`
impl fmt::Display for Point {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        // Format the `Point` struct as "(x, y)"
        write!(f, "({}, {})", self.x, self.y)
    }
}

fn main() {
    // Create a new `Point` instance
    let point = Point { x: 5, y: 10 };

    // Print the `Point` struct using the `Display` formatting
    println!("The point is: {}", point);
}

De Punkt struct implementerer Vise trekk. Inne i fmt metoden, den skrive! makroformater og skriv ønsket utdata til formateringsmaskinen med {} plassholder.

  resultat av tilpasset strengformatering

Feilsøkingstrekket

De Feilsøk egenskap ligner på Vise egenskap, bortsett fra at den fokuserer på å produsere utdata som er egnet for feilsøking og feilhåndtering formål. De Feilsøk egenskap brukes hovedsakelig med {:?} plassholder.

Implementering av Feilsøk egenskapen til dine tilpassede typer er grei. De Feilsøk egenskap gir en standardimplementering basert på Vise trekk. Du kan imidlertid overstyre standardoppførselen for å gi en spesialisert feilsøkingsrepresentasjon.

 use std::fmt; 

// Define a struct named `Person`
#[derive(Debug)]
struct Person {
    name: String,
    age: u32,
}

// Implement the `Display` trait for `Person`
impl fmt::Display for Person {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        // Format the `Person` struct as a human-readable string
        write!(f, "Name: {}, Age: {}", self.name, self.age)
    }
}

fn main() {
    // Create a new `Person` instance
    let person = Person {
        name: String::from("Alice"),
        age: 30,
    };

    // Print the `Person` struct using the `Display` formatting
    println!("Display: {}", person);

    // Print the `Person` struct using the `Debug` formatting
    println!("Debug: {:?}", person);
}

Programmet utleder Feilsøk egenskap for Person struktur med #[derive(Debug)] . Dette genererer automatisk implementeringen basert på struct-feltene.

Println-makroen skriver ut feilsøkingsrepresentasjonen med Feilsøk formateringsplassholder for formatering av utdata ved hjelp av Feilsøk gjennomføring.

Rust har et funksjonsrikt system

Rusts rike typesystem spiller en avgjørende rolle i strengformatering. Ved å utnytte Rusts statiske skriving og kraftige formateringsbiblioteker, kan du skrive sikker, effektiv kode mens du håndterer strengmanipulering og formateringsoppgaver.

Typesystemet sikrer kompileringssikkerhet og forhindrer vanlige feil, fra typefeil til formatspesifikasjonsproblemer. Med kombinasjonen av Rusts typesystem og dets omfattende formateringsmuligheter, kan du trygt takle strengformateringsutfordringer og dra nytte av språkets ytelses- og sikkerhetsgarantier.