Rust - String.find()으로 문자열 Index 찾기

러스트에서 find()함수로 String에 포함된 문자 또는 문자열의 Index를 찾는 방법을 소개합니다.

1. find() 함수

find()는 사용하여 String(&str)에 포함된 문자 또는 문자열의 Index를 리턴합니다.

  • find()의 인자는 char 또는 string을 전달할 수 있음
  • 문자/문자열이 포함되어있으면 Some(index)을 리턴, 그렇지 않으면 None을 리턴
  • index 값을 읽으려면 Some에서 꺼내서 읽어야 함
  • 리턴되는 index는 찾는 문자열의 첫번째 문자의 index
fn main() {
    let str1 = "Hello, World, Rust!";

    let match1 = "Hello";
    let match2 = "Rust";
    let match3 = "Java";
    let match4 = '!';

    println!("{:?}", str1.find(match1));
    println!("{:?}", str1.find(match2));
    println!("{:?}", str1.find(match3));
    println!("{:?}", str1.find(match4));
}

Output:

Some(0)
Some(14)
None
Some(18)

match로 Some/None 처리 및 index 읽기

Some()에 저장된 index는 아래와 같이 match를 사용하여 index를 가져올 수 있습니다.

fn main() {
    let str1 = "Hello, World, Rust!";

    let match1 = "Hello";
    let match2 = "Rust";
    let match3 = "Java";
    let match4 = '!';

    let res1 = str1.find(match1);
    match res1 {
        Some(index) => println!("Found {}", index),
        None => println!("Not Found"),
    };

    let res2 = str1.find(match3);
    match res2 {
        Some(index) => println!("Found {}", index),
        None => println!("Not Found"),
    };
}

Output:

Found 0
Not Found

if로 Some/None 처리 및 index 읽기

if를 사용하여 아래와 같이 문자열을 찾은 경우와 못찾은 경우에 대해서 처리할 수 있습니다.

fn main() {
    let str1 = "Hello, World, Rust!";

    let match1 = "Hello";
    let match2 = "Rust";
    let match3 = "Java";
    let match4 = '!';

    if let Some(index) = str1.find(match1) {
        println!("Index of '{}': {}", match1, index);
    } else {
        println!("{} not found", match1);
    }

    if let Some(index) = str1.find(match3) {
        println!("Index of {}: {}", match3, index);
    } else {
        println!("'{}' not found", match3);
    }
}

Output:

Index of 'Hello': 0
'Java' not found

3. String 타입에서 find() 함수 사용

&str 타입 뿐만 아니라 String 타입에서도 동일하게 find() 함수를 사용할 수 있습니다.

fn main() {
    let str1 = String::from("Hello, World, Rust!");

    let match1 = "Hello";
    let match2 = "Rust";
    let match3 = "Java";
    let match4 = '!';

    println!("{:?}", str1.find(match1));
    println!("{:?}", str1.find(match2));
    println!("{:?}", str1.find(match3));
    println!("{:?}", str1.find(match4));
}

Output:

Some(0)
Some(14)
None
Some(18)
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha