본문 바로가기

Rust/pure

[rust] 문자열 문자 단위로 나누기

 다른 언어와 마찬가지로 rust의 문자열은 split 함수를 이용한다.

let del = String::from("abcdefghijklmnopqrstuvwxyz0123456789");
let char_arr: Vec<&str> = del.split("").collect();
println!("{char_arr:?}");

 문자열을 split으로 나누면 Split 타입이 되므로, 결과를 벡터로 변환하기 위해 collect을 이용한다. 위 코드를 통해 얻는 결과는 일반적인 기대와는 달리 양 옆에 공백(empty)인 슬라이스를 표함한다.

출력된 결과

 이를 없애기 위해서는 코드를 다음과 같이 수정한다.

let del = String::from("abcdefghijklmnopqrstuvwxyz0123456789");
let char_arr: Vec<&str> = del.split_terminator("").skip(1).collect();
println!("{char_arr:?}");

 위 코드에서는 split 대신 split_terminator을 사용했다. split_terminator은 기본적으로 split과 동작이 비슷한데, 마지막 원소가 위에서 출력된 결과처럼 비어 있는 경우, 해당 슬라이스는 무시한다. 추가적으로 앞에 오는 공백 슬라이스를 제외하기 위해 skip(1) 을 수행하고, Split 타입을 벡터로 변경하기 위해 collect을 수행한다.

변경된 코드를 통해 출력된 결과

'Rust > pure' 카테고리의 다른 글

[rust] 숫자 parse 할 때 주의점  (0) 2023.04.04
[Rust] 함수(function)  (0) 2021.11.08
[Rust] 변수  (0) 2021.10.28