■ Iterator 트레잇의 map 메소드를 사용해 분할 문자열 벡터를 구하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
use std::str; let source : &str = "가가가,나나나,다다다"; let split :str::Split<'_, &str> = source.split(","); let string_vector : Vec<String> = split.map(|s| s.to_string()).collect(); println!("{:?}", string_vector); |
■ &str 타입의 split 메소드를 사용해 분할 문자열 벡터를 구하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let source : &str = "가가가,나나나,다다다"; let mut string_vector : Vec<String> = vec![]; for line in source.split(",") { string_vector.push(line.to_string()); } println!("{:?}", string_vector); |
■ base64 크레이트를 설치하는 방법을 보여준다. ▶ Cargo.toml
|
... [dependencies] base64 = "0.13.0" |
■ encode 함수를 사용해 URL 인코딩 문자열을 구하는 방법을 보여준다 ▶ 예제 코드 (RS)
|
use std::borrow; let url_encoded_cow : borrow::Cow<'_, str> = urlencoding::encode("테스트 1234"); println!("{}", url_encoded_cow); /* %ED%85%8C%EC%8A%A4%ED%8A%B8%201234 */ |
■ urlencoding 크레이트를 설치하는 방법을 보여준다. ▶ Cargo.toml
|
... [dependencies] urlencoding = "2.1" |
■ Chars 구조체의 next 메소드를 사용해 다음 문자를 구하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
use std::str; let source_string : String = String::from("ABCDEFGHIJKLMNOPQRSTUVWXYZ".to_string()); let mut source_chars: str::Chars = source_string.chars(); while let Some(source_character) = source_chars.next() { println!("{}", source_character); } |
■ String 구조체의 chars 메소드를 사용해 반복자를 구하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
use std::str; let source_string : String = String::from("ABCDEFGHIJKLMNOPQRSTUVWXYZ".to_string()); let mut source_chars: str::Chars = source_string.chars(); |
■ String 구조체 : split_whitespace 메소드를 사용해 공백 문자를 기준으로 문자열을 분리하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
use std::str; fn main() { let source_string : String = String::from("A B C D E"); let token_split_whitespace : str::SplitWhitespace = source_string.split_whitespace(); for token in token_split_whitespace { let token_trimmed : &str = token.trim(); println!("{}", token_trimmed); } } |
■ Encoding 구조체의 encode/decode 메소드를 사용해 EUC-KR 인코딩 파일을 저장하고 로드하는 방법을 보여준다. ▶ main.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
use std::fs; use std::io::Write; use encoding_rs; fn main() { let file_path : &str = "d:/sample.txt"; save_file(file_path, "테스트 문자열 입니다."); let text : String = load_file(file_path); println!("{}", text); } fn save_file(file_path: &str, text : &str) { let (byte_cow, _, _) = encoding_rs::EUC_KR.encode(text); let byte_vector : Vec<u8> = byte_cow.into_owned(); let mut file: fs::File = fs::File::create(file_path).expect("파일 생성"); file.write(&byte_vector[..]).expect("파일 쓰기"); } fn load_file(file_path : &str) -> String { let byte_vector : Vec<u8> = fs::read(file_path).expect("파일 읽기"); let (string_cow, _, _) = encoding_rs::EUC_KR.decode(&byte_vector); return string_cow.into_owned(); } |
test_project.zip
■ encoding_rs 크레이트를 설치하는 방법을 보여준다. ▶ Cargo.toml
|
... [dependencies] encoding_rs = "0.8.28" |
■ &str 타입의 split 메소드를 사용해 문자열을 분할하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let phone_number_string_slice : &str = "955-3658"; let string_slice_vector : Vec<&str> = phone_number_string_slice.split('-').collect(); println!("국번 : {}", string_slice_vector[0]); println!("사번 : {}", string_slice_vector[1]); |
■ String 구조체의 split_off 메소드를 사용해 문자열을 분할하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let phone_number_string_slice : &str = "955-3658"; let mut phone_number_string : String = String::from(phone_number_string_slice); let mut separator : String = phone_number_string.split_off(3); let private_number_string : String = separator.split_off(1); println!("국번 : {}", phone_number_string ); println!("구분 : {}", separator ); println!("사번 : {}", private_number_string); |
■ &str 타입의 split_at 메소드를 사용해 문자열을 분할하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let phone_number : &str = "955-3658"; let (office_number, temporary_number) = phone_number.split_at(3); let (separator , private_number ) = temporary_number.split_at(1); println!("국번 : {}", office_number ); println!("구분 : {}", separator ); println!("사번 : {}", private_number); |
■ 슬라이스를 사용해 문자열을 분할하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let phone_number : &str = "955-3658"; println!("국번 : {}", &phone_number[..3]); println!("사번 : {}", &phone_number[4..]); /* 국번 : 955 사번 : 3658 */ |
■ String 구조체의 replace 메소드를 사용해 문자열을 변경하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let string1 : String = String::from("디버그 모드로 실행했습니다."); let string2 : String = string1.replace("디버그", "릴리즈"); println!("{}\n{}", string1, string2); /* 디버그 모드로 실행했습니다. 릴리즈 모드로 실행했습니다. */ |
■ String 구조체의 find 메소드에서 클로저를 사용해 문자를 찾는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let string : String = String::from("There is more happiness in giving"); let result : Option<usize> = string.find(|character : char| character.to_ascii_uppercase() == 'S'); match result { Some(index) => println!("{}", index), None => println!("None"), }; |
■ &str 타입의 replace 메소드를 사용해 문자열을 변경하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let string_slice : &str = "디버그 모드로 실행했습니다."; let string : String = string_slice.replace("디버그", "릴리즈"); println!("{}\n{}", string_slice, string); /* 디버그 모드로 실행했습니다. 릴리즈 모드로 실행했습니다. */ |
■ &str 타입의 find 메소드를 사용해 문자열을 찾는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let string_slice : &str = "갑자기 한식이 퍼진 진짜 이유"; match string_slice.find("한식") { Some(index) => println!("한식 : {}B", index), None => println!("해당 문자열이 없습니다 : \"한식\"") }; match string_slice.find("양식") { Some(index) => println!("양식 : {}B", index), None => println!("해당 문자열이 없습니다 : \"양식\"") }; |
■ Vec<T> 구조체의 슬라이스 기능을 사용해 부분 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
use std::str; let string_slice : &str = "지혜는 무기보다 가치가 있다."; let character_vector : Vec<char> = string_slice.chars().collect(); let character_array : &[char] = &character_vector[4..=5]; let subsidary_string : String = character_array.into_iter().collect(); println!("{}", subsidary_string); |
■ Chars 구조체의 take 메소드를 사용해 부문 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let string_slice : &str = "지혜는 무기보다 가치가 있다."; let characters : str::Chars = string_slice.chars(); let string : String = characters.take(2).collect(); println!("{}", string); |
■ Chars 구조체의 enumerate 메소드를 사용해 문자열을 나열하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
use std::str; let string_slice : &str = "1234567890"; let characters : str::Chars = string_slice.chars(); for (index, character) in characters.enumerate() { println!("{}, {}", index, character); } /* 0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 0 */ |
■ &str 타입의 chars 메소드를 사용해 부분 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
let string_slice : &str = "단군왕검이 BC2333년에 고조선을 건국했다."; let mut string1 : String = String::new(); for (index, character) in string_slice.chars().enumerate() { if index < 4 { string1.push(character); continue; } break; } println!("{}", string1); let mut string2 : String = String::new(); for (index, character) in string_slice.chars().enumerate() { if 6 <= index && index <= 11 { string2.push(character); } } println!("{}", string2); /* 단군왕검 BC2333 */ |
■ &str 타입의 bytes 메소드를 사용해 문자열을 이진 에디터 형태로 출력하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
fn dump_hexadecimal_value(source : &str) { for (index, byte_value) in source.bytes().enumerate() { if index % 16 == 0 { print!("{:08x}|", index); } if index % 4 == 3 { print!("{:02x}|", byte_value); } else { print!("{:02x} ", byte_value); } if index % 16 == 15 { println!(""); } } println!(""); } fn main() { dump_hexadecimal_value("외모는 신이 결정하고 옷은 재력이 결정하고 품성은 의지가 결정한다."); } /* 00000000|ec 99 b8 eb|aa a8 eb 8a|94 20 ec 8b|a0 ec 9d b4| 00000010|20 ea b2 b0|ec a0 95 ed|95 98 ea b3|a0 20 ec 98| 00000020|b7 ec 9d 80|20 ec 9e ac|eb a0 a5 ec|9d b4 20 ea| 00000030|b2 b0 ec a0|95 ed 95 98|ea b3 a0 20|ed 92 88 ec| 00000040|84 b1 ec 9d|80 20 ec 9d|98 ec a7 80|ea b0 80 20| 00000050|ea b2 b0 ec|a0 95 ed 95|9c eb 8b a4|2e */ |
■ &str 타입의 chars 메소드를 사용해 문자열을 1문자씩 출력하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
let string_slice : &str = "테스트 문자열입니다."; for character in string_slice.chars() { print!("[{}]", character); } println!(""); println!("글자 수 : {}자", string_slice.chars().count()); let character_vector : Vec<char> = string_slice.chars().collect(); println!("Vec<char> : {:?}", character_vector); for character in character_vector.iter() { print!("({})", character); } println!(""); println!("글자 수 : {}자", character_vector.len()); /* [테][스][트][ ][문][자][열][입][니][다][.] 글자 수 : 11자 Vec<char> : ['테', '스', '트', ' ', '문', '자', '열', '입', '니', '다', '.'] (테)(스)(트)( )(문)(자)(열)(입)(니)(다)(.) 글자 수 : 11자 */ |
■ &str 타입의 len 메소드를 사용해 바이트 단위 길이를 구하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let string_slice : &str = "테스트 문자열입니다."; println!("{}", string_slice.len()); |