러스트에서 String을 분리하여 여러 String으로 분리하는 방법에 대해서 알아보겠습니다.
1. 특정 문자를 기준으로 문자열 분리
split()을 이용한 방법
String.split(str)
은 인자로 전달된 문자열로 String을 분리합니다. 그리고 Iterable 객체를 리턴합니다.
아래와 같이 리턴 값을 for문으로 반복하면서 분리된 문자열을 출력할 수 있습니다.
split(" ")
는 space를 기준으로 문자열을 분리
fn main() {
let my_str = String::from("Hello World Rust Programming");
let strings = my_str.split(" ");
for s in strings {
println!("{}", s);
}
}
Output:
Hello
World
Rust
Programming
split_whitespace()을 이용한 방법
만약 space로 문자열을 분리한다면, split(" ")
대신에 split_whitespace()
함수를 사용해도 됩니다.
fn main() {
let my_str = String::from("Hello World Rust Programming");
let strings = my_str.split_whitespace();
for s in strings {
println!("{}", s);
}
}
Output:
Hello
World
Rust
Programming
lines()을 이용한 방법
만약 개행 문자(new line)로 문자열을 분리한다면 split(\n)
대신에 lines()
를 사용할 수 있습니다.
fn main() {
let my_str = String::from("Hello\nWorld Rust\nProgramming");
let strings = my_str.lines();
for s in strings {
println!("{}", s);
}
}
Output:
Hello
World Rust
Programming
split_terminator()을 이용한 방법
split()
으로 문자열을 나눌 때, 아래 예제처럼 마지막 문자열이 Empty가 될 수 있습니다.
for문으로 변수를 모두 출력하면 마지막에 줄바꿈되어 어색하게 보입니다.
fn main() {
let my_str = String::from("Hello.World.Rust.");
let strings = my_str.split(".");
for s in strings {
println!("{}", s);
}
println!("Finish")
}
Output:
Hello
World
Rust
Finish
split_terminator()
를 사용하면 이런 불필요한 줄바꿈 문자를 출력하지 않도록 할 수 있습니다.
split_terminator()
는 split()
과 동일하지만, 분리하여 만들어진 마지막 문자열이 Empty일 때, 리턴 값에 포함시키지 않습니다. 따라서, Empty에 대해서 출력하지 않게 됩니다.
fn main() {
let my_str = String::from("Hello.World.Rust.");
let strings = my_str.split_terminator(".");
for s in strings {
println!("{}", s);
}
println!("Finish")
}
Output:
Hello
World
Rust
Finish
2. Index를 기준으로 문자열 분리
split_at()을 이용한 방법
split_at()
을 사용하면 Index를 기준으로 문자열을 분리할 수 있습니다.
split_at(index)
는 index를 기준으로 두개의 문자열로 분리let (str1, str2) = my_str.split_at(5)
으로 분리된 2개의 문자열은 각각의 변수로 할당- index가 5이면, 0~4까지의 Index가 첫번째 문자열로, 나머지는 두번째 문자열로 리턴
다음과 같이 split_at()
를 사용할 수 있습니다.
fn main() {
let my_str = String::from("HelloWorld");
let (str1, str2) = my_str.split_at(5);
println!("str1: {}", str1);
println!("str2: {}", str2);
}
Output:
str1: Hello
str2: World
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로 변환