Rust - String

Mickey·2022년 1월 12일
0

Rust

목록 보기
8/32
post-thumbnail
post-custom-banner

https://www.tutorialspoint.com/rust/rust_string.htm

Rust의 String 데이터 유형은 다음 두 가지로 분류

  • 문자열 리터럴(&str)
  • 문자열 객체(문자열)

String Literal

문자열 리터럴(&str)은 컴파일 타임에 문자열 값을 알 때 사용
문자열 리터럴은 변수에 하드코딩된 문자 집합

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

String Object

문자열 객체 형식은 표준 라이브러리에서 제공
문자열 리터럴과 달리 문자열 개체 유형은 언어 코어의 일부가 아님
표준 라이브러리 pub struct String에 public 구조체로 정의
문자열 객체는 길이가 늘어날 수 있는 컬렉션 객체
변경이 가능하고 UTF-8로 인코딩
런타임에 사용되는 문자열에 사용 가능
힙에 할당됨

Syntax

빈 문자열 생성

String::new()

문자열 복사

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

Common Methods - String Object

Sr.No.MethodSignatureDescription
1new()pub const fn new() -> String빈 문자열 생성
2to_string()fn to_string(&self) -> String주어진 값을 문자열로 변환
3replace()pub fn replace<'a,P>(&'a self, from: P, to: &str) -> String패턴의 모든 일치 항목을 다른 문자열로 변환
4as_str()pub fn as_str(&self) -> &str전체 문자열을 포함하는 문자열 조각을 추출
5push()pub fn push(&mut self, ch: char)주어진 char를 문자열 끝에 추가
6push_str()pub fn push_str(&mut self, string: &str)문자열 끝에 주어진 문자열 추가
7len()pub fn len(&self) -> usize문자열의 길이(byte 단위)
8trim()pub fn trim(&self) -> &str전/후 공백이 제거된 문자열 반환
9split_whitespace()pub fn split)whitespace(&self) -> SplitWhitesapce문자열 을 공백으로 분할하고 반복자를 반환
10split()pub fn split<'a, P>(&'a self, pat: P) -> Split<'a, P>P는 패턴이 &str, char 또는 분할을 결정하는 클로저일 수 있
11chars()pub fn chars(&self) -> Chars문자열의 문자에 대한 반복자를 반환

new()

new() 함수는 빈 문자열을 생성

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

to_string()

String 객체의 모든 메서드에 액세스하려면 to_string() 함수를 사용하여 문자열 리터럴을 객체 유형으로 변환

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

replace()

replace() 함수는 두 개의 매개변수를 취함
첫 번째 매개변수는 검색할 문자열 패턴
두 번째 매개변수는 교체할 새 값

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

as_str()

as_str() 함수는 전체 문자열을 포함하는 문자열 슬라이스를 추출

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

push()

push() 함수는 주어진 char를 이 문자열의 끝에 추가

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

push_str()

push_str() 함수는 주어진 문자열 슬라이스를 문자열 끝에 추가

len()

len() 함수는 문자열의 총 문자 수(공백 포함) 반환

trim()

trim() 함수는 문자열에서 선행 및 후행 공백을 제거
인라인 공백은 제거하지 않음

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

split_whitespace()

split_whitespace() 함수는 입력 문자열을 다른 문자열로 분할하여 반복자를 반환

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

split()

split() 함수는 패턴과 일치하는 문자로 구분된 문자열 슬라이스의 하위 문자열에 대한 반복자를 반환
split() 함수의 제한 사항은 나중에 사용하기 위해 결과를 저장할 수 없다
collect 함수를 사용하여 split()이 반환한 결과를 벡터로 저장

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

chars()

문자열의 개별 문자는 chars 메서드를 사용하여 액세스

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

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

Concatenation of Strings with + operator

문자열 값은 다른 문자열에 추가될 수 있음
문자열 연결의 결과는 새 문자열 개체
+연산자는 내부적으로 add 메서드를 사용

//add function
add(self,&str)->String { 
   // returns a String object
}
fn main(){
   let n1 = "Tutorials".to_string();
   let n2 = "Point".to_string();

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

Type Casting

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

Format! Macro

String 객체에 함께 추가하는 또 다른 방법은 format이라는 매크로 함수를 사용

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

profile
Mickey
post-custom-banner

0개의 댓글