Ferrugem - Corda

O tipo de dados String em Rust pode ser classificado no seguinte -

  • String Literal(&str)

  • String Object(String)

String Literal

Literais de string (& str) são usados ​​quando o valor de uma string é conhecido em tempo de compilação. Literais de string são um conjunto de caracteres, que são codificados em uma variável. Por exemplo, let company = "Tutorials Point" . Literais de string são encontrados no módulo std :: str. Literais de string também são conhecidos como fatias de string.

O exemplo a seguir declara dois literais de string - empresa e local .

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

Literais de string são estáticos por padrão. Isso significa que os literais de string têm garantia de validade durante todo o programa. Também podemos especificar explicitamente a variável como estática, conforme mostrado abaixo -

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

O programa acima irá gerar a seguinte saída -

company is : TutorialsPoint location :Hyderabad

String Object

O tipo de objeto String é fornecido na Biblioteca Padrão. Ao contrário do literal de string, o tipo de objeto de string não faz parte da linguagem central. É definido como estrutura pública na biblioteca padrão pub struct String . String é uma coleção que pode ser aumentada. É mutável e do tipo codificado em UTF-8. oStringtipo de objeto pode ser usado para representar valores de string que são fornecidos em tempo de execução. O objeto String é alocado no heap.

Sintaxe

Para criar um objeto String, podemos usar qualquer uma das seguintes sintaxes -

String::new()

A sintaxe acima cria uma string vazia

String::from()

Isso cria uma string com algum valor padrão passado como parâmetro para o from() método.

O exemplo a seguir ilustra o uso de um objeto String.

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());
}

O exemplo acima cria duas strings - um objeto de string vazio usando o novo método e um objeto de string do literal de string usando o método from .

O resultado é mostrado abaixo -

length is 0
length is 14

Métodos comuns - objeto string

Sr. Não. Método Assinatura Descrição
1 Novo() pub const fn new () → String Cria uma nova String vazia.
2 para sequenciar() fn to_string (& self) → String Converte o valor fornecido em uma String.
3 substituir() pub fn substituir <'a, P> (&' a self, from: P, to: & str) → String Substitui todas as correspondências de um padrão por outra string.
4 as_str () pub fn as_str (& self) → & str Extrai uma fatia da string contendo toda a string.
5 empurrar() pub fn push (& mut self, ch: char) Acrescenta o caractere fornecido ao final desta String.
6 push_str () pub fn push_str (& mut self, string: & str) Acrescenta uma determinada fatia de string ao final desta String.
7 len () pub fn len (& self) → usize Retorna o comprimento desta String, em bytes.
8 aparar() pub fn trim (& self) → & str Retorna uma fatia de string com os espaços em branco à esquerda e à direita removidos.
9 split_whitespace () pub fn split_whitespace (& self) → SplitWhitespace Divide uma fatia de string por espaço em branco e retorna um iterador.
10 Dividido() pub fn split <'a, P> (&' a self, pat: P) → Split <'a, P>, onde P é o padrão pode ser & str, char ou um fechamento que determina a divisão. Retorna um iterador sobre substrings desta fatia de string, separados por caracteres correspondidos por um padrão.
11 chars () pub fn chars (& self) → Chars Retorna um iterador sobre os caracteres de uma fatia de string.

Ilustração: novo ()

Um objeto de string vazio é criado usando o new()método e seu valor é definido como hello .

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

Resultado

O programa acima gera a seguinte saída -

hello

Ilustração: to_string ()

Para acessar todos os métodos do objeto String, converta um literal de string em tipo de objeto usando o to_string() função.

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

Resultado

O programa acima gera a seguinte saída -

Hello TutorialsPoint , Hello!

Ilustração: substituir ()

o replace()A função tem dois parâmetros - o primeiro parâmetro é um padrão de string a ser pesquisado e o segundo parâmetro é o novo valor a ser substituído. No exemplo acima, Hello aparece duas vezes na string name1 .

A função de substituição substitui todas as ocorrências da string Hello com Howdy.

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

Resultado

O programa acima gera a seguinte saída -

Howdy TutorialsPoint , Howdy!

Ilustração: as_str ()

o as_str() função extrai uma fatia de string contendo toda a string.

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);
}

Resultado

O programa acima gera a seguinte saída -

displaying string literal example_string

Ilustração: push ()

o push() função anexa o caractere fornecido ao final desta String.

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

Resultado

O programa acima gera a seguinte saída -

Tutorials

Ilustração: push_str ()

o push_str() função anexa uma determinada fatia de string no final de uma String.

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

Resultado

O programa acima gera a seguinte saída -

Tutorials Point

Ilustração: len ()

o len() função retorna o número total de caracteres em uma string (incluindo espaços).

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

Resultado

O programa acima gera a seguinte saída -

length is 20

Ilustração: trim ()

A função trim () remove os espaços à esquerda e à direita em uma string. NOTE que esta função não removerá os espaços embutidos.

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());
}

Resultado

O programa acima gera a seguinte saída -

Before trim
length is 24

After trim
length is 15

Ilustração: split_whitespace ()

o split_whitespace()divide a string de entrada em strings diferentes. Ele retorna um iterador, então estamos iterando através dos tokens conforme mostrado abaixo -

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;
   }
}

Resultado

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

Ilustração: string split ()

o split() stringmétodo retorna um iterador sobre substrings de uma fatia de string, separados por caracteres correspondidos por um padrão. A limitação do método split () é que o resultado não pode ser armazenado para uso posterior. ocollect O método pode ser usado para armazenar o resultado retornado por split () como um vetor.

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]);
}

O exemplo acima divide a string fullname, sempre que encontrar uma vírgula (,).

Resultado

token is Kannan
token is Sudhakaran
token is Tutorialspoint

firstName is Kannan
lastname is Sudhakaran
company is Tutorialspoint

Ilustração: chars ()

Os caracteres individuais em uma string podem ser acessados ​​usando o método chars. Vamos considerar um exemplo para entender isso.

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

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

Resultado

T
u
t
o
r
i
a
l
s

Concatenação de Strings com + operador

Um valor de string pode ser anexado a outra string. Isso é chamado de concatenação ou interpolação. O resultado da concatenação de string é um novo objeto de string. O operador + usa internamente um método add . A sintaxe da função add leva dois parâmetros. O primeiro parâmetro é self - o próprio objeto string e o segundo parâmetro é uma referência do segundo objeto string. Isso é mostrado abaixo -

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

Ilustração: Concatenação de String

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

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

O resultado será como fornecido abaixo

TutorialsPoint

Ilustração: Tipo de Fundição

O exemplo a seguir ilustra a conversão de um número em um objeto string -

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");
}

O resultado será como fornecido abaixo

2020
true

Ilustração: Format! Macro

Outra maneira de adicionar objetos String é usar uma função macro chamada format. O uso de Format! é como mostrado abaixo.

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

O resultado será como fornecido abaixo

Tutorials Point