러스트에서 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
- Rust - String을 char 리스트(Vector)로 변환
- Rust - 문자가 대문자인지 소문자인지 확인
- Rust - String에서 줄바꿈(newline) 문자 제거 방법
- Rust - String 대문자, 소문자 변환
- Rust - 현재 시간 가져오기 (DateTime, chrono)
- Rust - 예외 처리 방법 (Exception handling)
- Rust - String.find()으로 문자열 Index 찾기
- Rust - match (Switch) 사용 방법
- Rust - Vector의 요소 제거 방법 (remove, retain, drain)
- Rust - String의 특정 Index 값 가져오기
- Rust - 문자열 뒤집기, 역순으로 변경
- Rust - String 객체에 문자열 추가하기
- Rust - sleep(), 몇 초 지연/대기 방법
- Rust - String을 Int, Float으로 변환
- Rust - Integer를 String으로 변환
- Rust - Float를 String으로 변환
- Rust - String 비교 방법 (==, !=, eq, ne)
- Rust - String을 str으로, str을 String으로 변환
- Rust - String 공백 제거 (trim, replace)
- Rust - 2개의 배열이 같은지 비교 (==, equals)
- Rust - 배열 길이 가져오기 (Array length)
- Rust - Vector를 배열로 변환 (vector to array)
- Rust - 배열의 최소, 최대 값 찾기 (min, max)
- Rust - 배열의 합계, 평균 (sum, average)
- Rust - 2개의 Vector가 같은지 비교 (==, equals)
- Rust - HashMap을 Vector로 변환
- Rust - Vector의 최소, 최대 값 찾기 (min, max)
- Rust - Vector의 합계, 평균 (sum, average)
- Rust - 벡터 길이 가져오기 (Vector length)
- Rust - 배열을 HashSet으로 변환
- Rust - 배열을 벡터로 변환하는 방법
- Rust - 배열(벡터) 모든 요소 출력
- Rust - 배열 나누기, 자르기 (split_at, slice)
- Rust - 2개 벡터 하나로 합치기
- Rust - HashSet을 Vector로 변환