Ü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.