러스트에서 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
Programmingsplit_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
Programminglines()을 이용한 방법
만약 개행 문자(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
Programmingsplit_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
Finishsplit_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
Finish2. 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: WorldLoading 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 - String 비교 방법 (==, !=, eq, ne)
- Rust - Float를 String으로 변환
- Rust - Integer를 String으로 변환
- Rust - String을 str으로, str을 String으로 변환
- Rust - String 공백 제거 (trim, replace)
- Rust - 배열 길이 가져오기 (Array length)
- Rust - 2개의 배열이 같은지 비교 (==, equals)
- Rust - Vector를 배열로 변환 (vector to array)
- Rust - 배열의 최소, 최대 값 찾기 (min, max)
- Rust - 배열의 합계, 평균 (sum, average)
- Rust - 2개의 Vector가 같은지 비교 (==, equals)
- Rust - 배열을 HashSet으로 변환
- Rust - HashMap을 Vector로 변환
- Rust - Vector의 최소, 최대 값 찾기 (min, max)
- Rust - Vector의 합계, 평균 (sum, average)
- Rust - 벡터 길이 가져오기 (Vector length)
- Rust - 배열을 벡터로 변환하는 방법
- Rust - 배열(벡터) 모든 요소 출력
- Rust - 배열 나누기, 자르기 (split_at, slice)
- Rust - 2개 벡터 하나로 합치기
- Rust - HashSet을 Vector로 변환