Technologieaustausch

[Rust] String-String-Typ-Lernen

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Was ist String

  • In der Kernsprache von Rust gibt es nur einen String-Typ, und das ist String-Slice.strnormalerweise als angesehen&strgeliehen.
  • Der String-Typ wird über die Standardbibliothek bereitgestellt und nicht direkt in die Kernsprache codiert. Es handelt sich um einen erweiterbaren, veränderlichen UTF-8-codierten Typ.
  • strUndStringAlle sind utf-8-kodiert.

Erstellen Sie eine neue Zeichenfolge

  • String wird tatsächlich durch Umschließen eines Vektors vom Typ Bytes implementiert.
  • Erstellen Sie einen String mit der neuen Methode:let mut s = String::new()
  • Erstellen Sie einen String mit der to_string-Methode:
    let data = "initial contents";
    let s = data.to_string();
    let s = "initial contents".to_string();
    
    • 1
    • 2
    • 3
  • Erstellen Sie eine Zeichenfolge mit der Methode String::from.let s = String::from("initial contents").

UpdateString

Hängen Sie einen String mit push_str und push an

let mut s = String::from("foo");
s.push_str("bar");
// s is foobar
  • 1
  • 2
  • 3

push_strDie Methode ändert den Besitz der Zeichenfolge nicht

let mut s = String::from("lo");
s.push('l');
// s is lol
  • 1
  • 2
  • 3

Verwenden Sie den +-Operator oder das Format!-Makro, um Zeichenfolgen zu verketten

let s1 = String::from("Hello, ");
let s2 = String::from("world!");
let s3 = s1 + &s2; // note s1 has been moved here and can no longer be used
  • 1
  • 2
  • 3
let s1 = String::from("tic");
let s2 = String::from("tac");
let s3 = String::from("toe");

let s = format!("{s1}-{s2}-{s3}");
  • 1
  • 2
  • 3
  • 4
  • 5

Rust erlaubt keine Subskription, um auf einzelne Zeichen innerhalb einer Zeichenfolge zuzugreifen

So iterieren Sie über einen String

  • Auf einzelne UniCode-Zeichen kann mit der Methode chars zugegriffen werden. Verwenden Sie die Bytes-Methode, um auf jedes Byte zuzugreifen.
for c in "Зд".chars() {
    println!("{c}");
}
  • 1
  • 2
  • 3