Thinking Different




String (문자열)

러스트의 표준 라이브러리로 제공되는 String은 동적으로 생성되어 문자열이 가변적이며, UTF-8 인코딩 타입, 소유권을 가진다.

 

 

스트링 생성

// 1. 동적 가변 빈 스트링 생성
let mut s = String::new();


// 2. 기본텍스트를 가지는 동적 스트링 생성
let s = String::from("안녕하세요");

// 3. 2번과 같다
let data = "안녕하세요";
let s = data.to_string();

...  또는 아래와 같이 한번에 사용

let s = "안녕하세요".to_string();


// String::from과 .to_string은 똑같습니다.

 

 

스트링 갱신 (데이터 추가하기)  push_str  또는 push

 

push_str은 여러 글자를 추가할때 사용하며, push는 단문자를 추가할때 사용합니다.

 

fn main()
{
    // 가변 스트링 생성
    let mut s = String::from("안녕하세요");

    // 문자열 추가하기
    s.push_str(", 러스트");

    // 문자 추가하기
    s.push('!');
    
    println!("{}", s);
}

// 출력 결과
안녕하세요, 러스트!

 

 

'+' 연산자를 사용한 문자열 합치기

fn main()
{
    let s1 = String::from("Hello");
    let s2 = String::from(", Rust");
    let s3 = String::from("!");

    // + 연산자를 활용한 문자열 접합(합치기)
    let s = s1 + &s2 + &s3;
       
    println!("{}", s);
}


// 출력 결과
Hello, Rust!

 

format!() 함수를 활용한 문자열 합치기(포맷팅)

format!() 함수를 활용하여 println! 와 같은 기능으로 변수에 담을 수 있습니다. 아래 예제로 확인하세요

fn main()
{
    let s1 = String::from("Hello");
    let s2 = String::from(", Rust");
    let s3 = String::from("!");
    
    // format! 함수를 활용한 문자열 포맷팅
    let s = format!("{}{}{}", s1, s2, s3);
    
    // .len() 함수로 문자열 길이를 얻을 수 있습니다.
    println!("{}, {}", s, s.len());
}


// 출력 결과
Hello, Rust!, 12

 

 

문자열 개별 접근  .chars()  ,  .bytes()

.chars() 의 경우 개별적인 문자를 하나씩 접근 가능하다, bytes 의 경우 문자의 유니코드 스칼라 값을 byte로 얻습니다.

fn main()
{
    let s = "Hello";
    
    // 한글자씩 출력
    for c in s.chars()
    {
	    println!("{}", c);
    }
    
    // byte로 출력
    for b in s.bytes()
    {
	    println!("{}", b);
    }
}

// 출력 결과
H
e
l
l
o
72
101
108
108
111