Rost - Schnur

Der String-Datentyp in Rust kann wie folgt klassifiziert werden:

  • String Literal(&str)

  • String-Objekt(String)

String Literal

String-Literale (& str) werden verwendet, wenn der Wert eines Strings zur Kompilierungszeit bekannt ist. String-Literale sind eine Reihe von Zeichen, die in einer Variablen fest codiert sind. Lassen Sie zum Beispiel company = "Tutorials Point" . String-Literale finden Sie im Modul std :: str. String-Literale werden auch als String-Slices bezeichnet.

Im folgenden Beispiel werden zwei Zeichenfolgenliterale deklariert - Firma und Standort .

fn main() {
   let company:&str="TutorialsPoint";
   let location:&str = "Hyderabad";
   println!("company is : {} location :{}",company,location);
}

String-Literale sind standardmäßig statisch. Dies bedeutet, dass String-Literale garantiert für die Dauer des gesamten Programms gültig sind. Wir können die Variable auch explizit als statisch angeben, wie unten gezeigt -

fn main() {
   let company:&'static str = "TutorialsPoint";
   let location:&'static str = "Hyderabad";
   println!("company is : {} location :{}",company,location);
}

Das obige Programm erzeugt die folgende Ausgabe -

company is : TutorialsPoint location :Hyderabad

String-Objekt

Der Objekttyp String wird in der Standardbibliothek bereitgestellt. Im Gegensatz zum String-Literal ist der String-Objekttyp kein Teil der Kernsprache. Es ist als öffentliche Struktur in der Standardbibliothek pub struct String definiert . String ist eine erweiterbare Sammlung. Es ist veränderlich und UTF-8-codiert. DasStringDer Objekttyp kann verwendet werden, um Zeichenfolgenwerte darzustellen, die zur Laufzeit bereitgestellt werden. Das String-Objekt wird im Heap zugewiesen.

Syntax

Um ein String-Objekt zu erstellen, können Sie eine der folgenden Syntax verwenden:

String::new()

Die obige Syntax erstellt eine leere Zeichenfolge

String::from()

Dadurch wird eine Zeichenfolge mit einem Standardwert erstellt, der als Parameter an die übergeben wird from() Methode.

Das folgende Beispiel zeigt die Verwendung eines String-Objekts.

fn main(){
   let empty_string = String::new();
   println!("length is {}",empty_string.len());

   let content_string = String::from("TutorialsPoint");
   println!("length is {}",content_string.len());
}

Im obigen Beispiel werden zwei Zeichenfolgen erstellt - ein leeres Zeichenfolgenobjekt mit der neuen Methode und ein Zeichenfolgenobjekt aus dem Zeichenfolgenliteral mit der from- Methode.

Die Ausgabe ist wie unten gezeigt -

length is 0
length is 14

Allgemeine Methoden - String-Objekt

Sr.Nr. Methode Unterschrift Beschreibung
1 Neu() pub const fn new () → String Erstellt einen neuen leeren String.
2 to_string () fn to_string (& self) → String Konvertiert den angegebenen Wert in einen String.
3 ersetzen() pub fn ersetze <'a, P> (&' a self, von: P, bis: & str) → String Ersetzt alle Übereinstimmungen eines Musters durch eine andere Zeichenfolge.
4 as_str () pub fn as_str (& self) → & str Extrahiert ein String-Slice, das den gesamten String enthält.
5 drücken() pub fn push (& mut self, ch: char) Hängt das angegebene Zeichen an das Ende dieser Zeichenfolge an.
6 push_str () pub fn push_str (& mut self, string: & str) Hängt ein bestimmtes String-Slice an das Ende dieses Strings an.
7 len () pub fn len (& self) → usize Gibt die Länge dieses Strings in Bytes zurück.
8 trimmen() pub fn trim (& self) → & str Gibt ein String-Slice zurück, bei dem führende und nachfolgende Leerzeichen entfernt sind.
9 split_whitespace () pub fn split_whitespace (& self) → SplitWhitespace Teilt ein String-Slice nach Leerzeichen und gibt einen Iterator zurück.
10 Teilt() pub fn split <'a, P> (&' a self, pat: P) → Split <'a, P>, wobei P ein Muster ist, kann & str, char oder ein Abschluss sein, der die Aufteilung bestimmt. Gibt einen Iterator über Teilzeichenfolgen dieses String-Slice zurück, die durch Zeichen getrennt sind, die durch ein Muster übereinstimmen.
11 Zeichen () pub fn chars (& self) → Zeichen Gibt einen Iterator über die Zeichen eines String-Slice zurück.

Abbildung: neu ()

Ein leeres String-Objekt wird mit dem erstellt new()Methode und ihr Wert wird auf Hallo gesetzt .

fn main(){
   let mut z = String::new();
   z.push_str("hello");
   println!("{}",z);
}

Ausgabe

Das obige Programm erzeugt die folgende Ausgabe -

hello

Abbildung: to_string ()

Um auf alle Methoden des String-Objekts zuzugreifen, konvertieren Sie ein String-Literal mit dem in den Objekttyp to_string() Funktion.

fn main(){
   let name1 = "Hello TutorialsPoint , 
   Hello!".to_string();
   println!("{}",name1);
}

Ausgabe

Das obige Programm erzeugt die folgende Ausgabe -

Hello TutorialsPoint , Hello!

Abbildung: ersetzen ()

Das replace()Die Funktion benötigt zwei Parameter: Der erste Parameter ist ein zu suchendes Zeichenfolgenmuster und der zweite Parameter ist der neue Wert, der ersetzt werden soll. Im obigen Beispiel wird Hello zweimal in der Zeichenfolge name1 angezeigt .

Die Ersetzungsfunktion ersetzt alle Vorkommen der Zeichenfolge Hello mit Howdy.

fn main(){
   let name1 = "Hello TutorialsPoint , 
   Hello!".to_string();         //String object
   let name2 = name1.replace("Hello","Howdy");    //find and replace
   println!("{}",name2);
}

Ausgabe

Das obige Programm erzeugt die folgende Ausgabe -

Howdy TutorialsPoint , Howdy!

Abbildung: as_str ()

Das as_str() Die Funktion extrahiert ein String-Slice, das den gesamten String enthält.

fn main() {
   let example_string = String::from("example_string");
   print_literal(example_string.as_str());
}
fn print_literal(data:&str ){
   println!("displaying string literal {}",data);
}

Ausgabe

Das obige Programm erzeugt die folgende Ausgabe -

displaying string literal example_string

Abbildung: push ()

Das push() Die Funktion hängt das angegebene Zeichen an das Ende dieses Strings an.

fn main(){
   let mut company = "Tutorial".to_string();
   company.push('s');
   println!("{}",company);
}

Ausgabe

Das obige Programm erzeugt die folgende Ausgabe -

Tutorials

Abbildung: push_str ()

Das push_str() Die Funktion hängt ein bestimmtes String-Slice an das Ende eines Strings an.

fn main(){
   let mut company = "Tutorials".to_string();
   company.push_str(" Point");
   println!("{}",company);
}

Ausgabe

Das obige Programm erzeugt die folgende Ausgabe -

Tutorials Point

Abbildung: len ()

Das len() Die Funktion gibt die Gesamtzahl der Zeichen in einer Zeichenfolge (einschließlich Leerzeichen) zurück.

fn main() {
   let fullname = " Tutorials Point";
   println!("length is {}",fullname.len());
}

Ausgabe

Das obige Programm erzeugt die folgende Ausgabe -

length is 20

Abbildung: trim ()

Die Funktion trim () entfernt führende und nachfolgende Leerzeichen in einer Zeichenfolge. HINWEIS: Mit dieser Funktion werden die Inline-Leerzeichen nicht entfernt.

fn main() {
   let fullname = " Tutorials Point \r\n";
   println!("Before trim ");
   println!("length is {}",fullname.len());
   println!();
   println!("After trim ");
   println!("length is {}",fullname.trim().len());
}

Ausgabe

Das obige Programm erzeugt die folgende Ausgabe -

Before trim
length is 24

After trim
length is 15

Abbildung: split_whitespace ()

Das split_whitespace()teilt die Eingabezeichenfolge in verschiedene Zeichenfolgen auf. Es gibt einen Iterator zurück, sodass wir die Token wie unten gezeigt durchlaufen.

fn main(){
   let msg = "Tutorials Point has good t
   utorials".to_string();
   let mut i = 1;
   
   for token in msg.split_whitespace(){
      println!("token {} {}",i,token);
      i+=1;
   }
}

Ausgabe

token 1 Tutorials
token 2 Point
token 3 has
token 4 good
token 5 tutorials

Abbildung: split () Zeichenfolge

Das split() stringDie Methode gibt einen Iterator über Teilzeichenfolgen eines String-Slice zurück, die durch Zeichen getrennt sind, die durch ein Muster übereinstimmen. Die Einschränkung der split () -Methode besteht darin, dass das Ergebnis nicht zur späteren Verwendung gespeichert werden kann. Dascollect Methode kann verwendet werden, um das von split () zurückgegebene Ergebnis als Vektor zu speichern.

fn main() {
   let fullname = "Kannan,Sudhakaran,Tutorialspoint";

   for token in fullname.split(","){
      println!("token is {}",token);
   }

   //store in a Vector
   println!("\n");
   let tokens:Vec<&str>= fullname.split(",").collect();
   println!("firstName is {}",tokens[0]);
   println!("lastname is {}",tokens[1]);
   println!("company is {}",tokens[2]);
}

Das obige Beispiel teilt die Zeichenfolge fullname, wann immer es auf ein Komma stößt (,).

Ausgabe

token is Kannan
token is Sudhakaran
token is Tutorialspoint

firstName is Kannan
lastname is Sudhakaran
company is Tutorialspoint

Abbildung: Zeichen ()

Auf einzelne Zeichen in einer Zeichenfolge kann mit der Zeichenmethode zugegriffen werden. Betrachten wir ein Beispiel, um dies zu verstehen.

fn main(){
   let n1 = "Tutorials".to_string();

   for n in n1.chars(){
      println!("{}",n);
   }
}

Ausgabe

T
u
t
o
r
i
a
l
s

Verkettung von Strings mit dem Operator +

Ein Zeichenfolgenwert kann an eine andere Zeichenfolge angehängt werden. Dies wird als Verkettung oder Interpolation bezeichnet. Das Ergebnis der Zeichenfolgenverkettung ist ein neues Zeichenfolgenobjekt. Der Operator + verwendet intern eine Add- Methode. Die Syntax der Add-Funktion akzeptiert zwei Parameter. Der erste Parameter ist self - das String-Objekt selbst und der zweite Parameter ist eine Referenz des zweiten String-Objekts. Dies ist unten gezeigt -

//add function
add(self,&str)->String { 
   // returns a String object
}

Abbildung: String-Verkettung

fn main(){
   let n1 = "Tutorials".to_string();
   let n2 = "Point".to_string();

   let n3 = n1 + &n2; // n2 reference is passed
   println!("{}",n3);
}

Die Ausgabe erfolgt wie unten angegeben

TutorialsPoint

Abbildung: Typ Casting

Das folgende Beispiel zeigt die Konvertierung einer Zahl in ein Zeichenfolgenobjekt.

fn main(){
   let number = 2020;
   let number_as_string = number.to_string(); 
   
   // convert number to string
   println!("{}",number_as_string);
   println!("{}",number_as_string=="2020");
}

Die Ausgabe erfolgt wie unten angegeben

2020
true

Abbildung: Format! Makro

Eine andere Möglichkeit, String-Objekte zusammen hinzuzufügen, ist die Verwendung einer Makrofunktion namens Format. Die Verwendung von Format! ist wie unten gezeigt.

fn main(){
   let n1 = "Tutorials".to_string();
   let n2 = "Point".to_string();
   let n3 = format!("{} {}",n1,n2);
   println!("{}",n3);
}

Die Ausgabe erfolgt wie unten angegeben

Tutorials Point