-
Rust: String 한글 len() (UTF-8)컴퓨터/Rust 2021. 7. 20. 12:39728x90반응형
할 것
Rust String은 UTF-8 기준으로 len()을 부르면 바이트 기준으로 센다.
Go언어의 utf8.RuneCountInString처럼 "안녕하세요"를 length 5로 세고 싶을 땐
unicode-segment crate를 사용하면 편해진다.
(또는 chars().count()도 있지만 이 예제에선 String 길이가 5 이상이면 자르고 ... 을 추가한다.)
예제 코드
use unicode_segmentation::UnicodeSegmentation; let mut some_string = "가나다라마바사아"; if some_string.graphemes(true).count() > 5 { // 자소 기준 길이 5 넘음 some_string = UnicodeSegmentation::grapheme_indices(some_string.as_str(), true) // &str .enumerate() .filter(|&(i, _)| i < 5) .map(|(_, (_, s))| s) // Vec<usize, (usize, &str)> .collect::<Vec<&str>>() .join("") + "..."; } println!("{}", some_string) // "가나다라마..."
728x90'컴퓨터 > Rust' 카테고리의 다른 글
Rust: Javascript POST json 데이터 consume (0) 2021.07.25 Rust: serde De/Serialize traits into JSON (0) 2021.07.19 Rust: diesel db query 코드 정리 (0) 2021.07.18