Übereinstimmung einer Zeichenfolge mit Zeichenfolgenliteralen

Nilesh Katuwal 21 Juni 2023
  1. Saite in Rost
  2. String-Literale in Rust
  3. Wandeln Sie String in Rust in ein &str um
Übereinstimmung einer Zeichenfolge mit Zeichenfolgenliteralen

In diesem Tutorial geht es darum, einen String mit String-Literalen in Rust zu vergleichen.

Saite in Rost

Der Typ String ist der beliebteste String-Typ, da er den Inhalt des Strings besitzt. Es ist eng verwandt mit dem Primitiv str.

In Rust werden Strings in zwei Typen eingeteilt, nämlich String und &str.

Ein String wird als Vektor von Bytes (Vec<u8>) gespeichert, ist aber garantiert eine gültige UTF-8-Sequenz. String ist eine Heap-zugeordnete Variable, die erweiterbar und nicht nullterminiert ist.

&str ist ein Slice (&[u8]), das immer auf eine gültige UTF-8-Sequenz zeigt und verwendet werden kann, um einen String anzuzeigen, ähnlich wie &[T] zum Anzeigen verwendet werden kann in ein Vec<T>.

Wir können einen String aus einem Literal-String mit String::from erstellen.

Beispiel:

let _welcome = String::from("Welcome to the world of Rust");

String-Literale in Rust

Es gibt zahlreiche Möglichkeiten, Zeichenfolgenliterale auszudrücken, die Sonderzeichen enthalten. Sie alle ergeben ein ähnliches &str; Daher ist es besser, das bequemste Formular zu verwenden.

Gelegentlich sind zu viele Zeichen zum Escapezeichen vorhanden, oder es ist bequemer, eine Zeichenfolge einzutippen. Dies ist der Fall, wenn rohe Zeichenfolgenliterale verwendet werden.

Beispiel:

fn main() {
    let rawString = r"This is an example of raw string: \x3F \u{211D}";
    println!("{}", rawString);

    let spec_char = r#"I learnt that: "Quotes can also be used!""#;
    println!("{}", spec_char);
}

Ausgang:

This is an example of raw string: \x3F \u{211D}
I learnt that: "Quotes can also be used!"

Wenn wir Anführungszeichen in eine Rohzeichenfolge einfügen müssen, müssen wir ein Paar # hinzufügen, wie wir es in den obigen Codezeilen verwendet haben.

Zeichenfolgenliterale können Zeilenumbrüche enthalten. Wenn eine Zeile endet, kann es sich um einen Zeilenumbruch (U+000A) oder um ein Paar Wagenrückläufe und einen Zeilenumbruch (U+10000, U+10000) handeln.

Eine bemerkenswerte Ausnahme tritt auf, wenn ein nicht maskiertes U+005C-Zeichen direkt vor einem Zeilenumbruch erscheint. Das Zeichen U+005C und alle Leerzeichen in der folgenden Zeile werden nicht in U+000A übersetzt.

Wandeln Sie String in Rust in ein &str um

Wir müssen .as_str() so verwenden, um den String in ein &str umzuwandeln.

Beispiel:

fn main() {
    let the_string = String::from("z");
    match the_string.as_str() {
    "x" => println!("Hello"),
    "y" => println!("There"),
    "z" => println!("Hello Rust!!!"),
    _ => println!("something else!"),
    }
}

Ausgang:

Hello Rust!!!

.as str() ist kürzer und erzwingt eine robustere Typprüfung.

Verwandter Artikel - Rust String