문자열 자르기#

문자열 자르기 문법#

Rust는 문자열을 자르기 자르기 위한 편리한 문법을 제공합니다.
다음 코드를 통해서 알아봅시다.

fn main() {
    let s = String::from("hello world");
   
    println!("{}", &s[0..5]);
    println!("{}", &s[6..11]);

    println!("{}", &s[..5]);
    println!("{}", &s[6..]);

    println!("{}", &s[..]);
}

&s[0..5] 처럼 코딩하면 "hello"를 잘라낼 수 있습니다.
여기서 0은 Start index를 의미하고, 5는 End index +1 를 의미합니다.
(End index에 +1 하여 사용한다는 것을 유의하세요.)
&s[6..11] 처럼 코딩하면 "world"를 잘라낼 수 있습니다.

그리고, Start index를 생략하면 첫번째 원소를 가리키고, End index를 생략하면 마지막 원소를 가리킵니다.
&s[..5] 처럼 Start index를 생략하면, 처음부터 index4까지 잘라내므로 "hello"가 추출됩니다.
&s[6..] 처럼 End index를 생략하면, index6부터 마지막 원소까지 잘라내므로 "world"가 추출됩니다.
또한, &s[..]처럼 Start, End index를 생략 할 수도 있습니다.

[..] 문법은 integer, float type 등 모든 Collection 에서 사용 가능하다#

[..] 문법은 String type에서만 사용할 수 있는 것이 아닙니다.
Collection을 이루는 여러가지 type에서 사용할 수 있습니다.
다음 에제를 살펴 봅시다.

fn main() {
    let a = [1, 2, 3, 4, 5];
    
    let b = &a[1..3];                 // --> b = [2, 3]
    println!("{}, {}", b[0], b[1]);

    let c = &a[..3];
    let d = &a[2..];
    let e = &a[..];
}

a는 i32 type 원소를 가지는 배열이며, 여기에 [..] 문법을 동일하게 사용할 수 있습니다.
&a[1..3] 처럼 코딩하면 index 1부터 index 2 까지 [2, 3]을 추출합니다.
앞에서 설명했던 String slice와 마찬가지로 Start, End, Start/End index를 생략할 수 있습니다.