Hur strängformatering fungerar i Rust

Hur strängformatering fungerar i Rust
Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Strängformatering är en avgörande aspekt av programmering eftersom den låter dig manipulera och visa data på ett läsbart, strukturerat sätt. Du kan styra datapresentationen genom att formatera strängar för en bättre användarupplevelse.





Rust tillhandahåller en kraftfull och flexibel mekanism för strängformatering som ger dig möjlighet att skapa tydliga och koncisa utdata, inklusive numeriska, datum, tid och felhanteringsfunktioner.





MAKEUSE AV DAGENS VIDEO SCROLL FÖR ATT FORTSÄTTA MED INNEHÅLL

Grundläggande strängformatering i Rust

Rust ger funktionalitet för att formatera strängar med andra Rost inbyggda typer .





Du kan använda formatera! makro för grundläggande strängformatering i Rust. De formatera! makro ger ett kortfattat och kraftfullt sätt att konstruera formaterade strängar med platshållare inneslutna i hängslen.

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

De namn variabeln innehåller en sträng och ålder variabeln har ett heltal. De meddelande variabel har en formaterad sträng som använder formatera! för att ersätta platshållarna med motsvarande värden, vilket resulterar i en formatsträng som innehåller namn och ålder .



  resultatet av grundläggande strängformatering

De formatera! makro stöder olika formatspecifikationer som låter dig styra utdata.

Så här anger du antalet decimaler för flyttal, definierar bredden på fälten och justerar utdata.





 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 variabeln har ett flyttalsvärde; med formatspecifikationen :.2 , kan du instruera formatera! makro att visa pi med två decimaler.

De formatera! makro är en av många metoder för strängformatering med Rust. Beroende på dina krav, överväg att använda println! eller skriva! makro för formaterad utdata till konsolen eller andra utdataströmmar.





Formatera numeriska värden

Rust tillhandahåller även funktionalitet för att formatera olika numeriska värden, från heltal till flytande och andra numeriska typer.

Generellt sett är formatspecifikationer grunden för strängformatering i Rust, och du behöver rätt specifikator beroende på det numeriska värde du vill formatera.

Här är några av formatspecifikationerna Rust tillhandahåller för numeriska värden:

Heltal

%d eller %i

Formaterar heltal inklusive positiva och negativa värden.

Flyttal

%f

Lämplig för att formatera flyttal, inklusive integral- och bråkdelar.

Exponentiell notation

%e eller %E

Formaterar tal i vetenskaplig notation (exponentiell form).

Oktal representation

%O

Formaterar heltal i oktal representation (bas 8).

Hexadecimal representation

%x eller %X

Formaterar heltal i hexadecimal representation (bas 16).

Dessutom kan du ange utfyllnad och justering för numeriska värden. Utfyllnaden lägger till mellanslag eller nollor till ett formaterat numeriskt värde för att uppnå en önskad bredd. Utfyllnad hjälper till att anpassa värden för presentation i tabellform eller andra visuellt organiserade layouter. Före breddvärdet kan du ange utfyllnadstecknet, antingen ett mellanslag eller noll.

För att vänsterjustera ett värde, använd - flagga. För att högerjustera ett värde, utelämna flaggan eller använd '0'-flaggan för nollutfyllnad.

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

Värdet är högerjusterat inom en bredd på 10 tecken, vilket resulterar i åtta inledande mellanslag före siffran.

Anpassad strängformatering i Rust

Anpassad strängformatering är viktig för mer krävande operationer. Du kan skapa anpassade formateringsimplementeringar för dina typer med Rusts inbyggda std::fmt modul.

De std::fmt modulen ger egenskaper för formatering av utdata med ett brett utbud av alternativ för att anpassa datautseendet under strängkonverteringsprocessen. De std::fmt modul ger en Visa och Felsök egenskap som är praktisk för strängformateringsoperationer.

Visningsdraget

De Visa trait hjälper till att producera läsbar utdata genom att definiera hur ett objekt ska formateras med {} platshållare i en sträng. Du kan implementera Visa egenskap för din anpassade typer genom att definiera en metod som kallas fmt som tar en formatterare som argument.

hur man vet vem som blockerade dig på facebook

Formateraren tillhandahåller olika metoder för att kontrollera formatutdata, som t.ex write_str och skriv_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 implementerar Visa drag. Inuti fmt metod, den skriva! makroformat och skriv önskad utdata till formateraren med {} Platshållare.

  resultatet av anpassad strängformatering

Debug-egenskapen

De Felsök egenskap liknar den Visa egenskap, förutom att den fokuserar på att producera utdata som är lämpliga för felsökning och felhantering syften. De Felsök egenskapen används främst med {:?} Platshållare.

Genomförande av Felsök egenskapen på dina anpassade typer är enkel. De Felsök egenskap ger en standardimplementering baserad på Visa drag. Du kan dock åsidosätta standardbeteendet för att tillhandahålla en specialiserad felsökningsrepresentation.

 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 härleder Felsök egenskap för Person strukturera med #[derive(Debug)] . Detta genererar automatiskt implementeringen baserat på struct-fälten.

Println-makrot skriver ut felsökningsrepresentationen med Felsök formateringsplatshållare för att formatera utdata med hjälp av Felsök genomförande.

Rust har ett funktionsrikt system

Rusts rika typsystem spelar en avgörande roll i strängformatering. Genom att utnyttja Rusts statiska typning och kraftfulla formateringsbibliotek kan du skriva säker, effektiv kod samtidigt som du hanterar strängmanipulation och formateringsuppgifter.

Typsystemet säkerställer säkerhet vid kompilering och förhindrar vanliga fel, från typfelmatcher till problem med formatspecifikationer. Med kombinationen av Rusts typsystem och dess omfattande formateringsmöjligheter kan du med säkerhet tackla strängformateringsutmaningar och dra nytta av språkets prestanda och säkerhetsgarantier.