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