문자열 변환
Coddy Rust 여정의 Fundamentals 섹션에 포함된 레슨 — 75개 중 71번째.
숫자 타입을 문자열로 변환하려면 to_string() 메서드를 사용할 수 있습니다. 이 메서드는 정수와 부동 소수점 숫자를 포함한 대부분의 데이터 타입에서 사용할 수 있습니다.
예를 들어:
let number = 42;
let number_str = number.to_string();
println!("The number as a string: {}", number_str);이 예제에서는 i32 변수인 number를 String으로 변환하고 있습니다.
문자열을 숫자 유형으로 변환하려면 parse() 메서드를 사용할 수 있습니다. 이 메서드는 변환에 성공하면 파싱된 숫자를, 실패하면 에러를 포함하는 결과를 반환합니다.
예를 들어:
let number_str = "123";
let number: i32 = number_str.parse().unwrap();
println!("The number as an i32: {}", number);이 예제에서는 parse() 메서드를 사용하여 문자열 number_str을 i32로 변환합니다. unwrap() 메서드는 변환이 성공적이라고 가정하고 Result에서 값을 추출하는 데 사용됩니다.
변환에 실패하면 프로그램은 패닉(실패) 상태가 됩니다.
또한 다양한 숫자 타입과 함께 parse()를 사용할 수 있습니다:
let float_str = "3.14";
let float_num: f64 = float_str.parse().unwrap();
println!("The number as an f64: {}", float_num);이 경우, 문자열 float_str을 f64로 변환하고 있습니다.
챌린지
쉬움세 개의 인자를 받는 convert_and_print라는 이름의 함수를 생성하세요:
- 문자열 슬라이스
s: &str— 이것은 텍스트로 작성된 숫자입니다 (예:"123.67").to_string이false일 때만 사용됩니다. - 부동 소수점 숫자
n: f64.to_string이true일 때만 사용됩니다. - 불리언
to_string: bool— 수행할 작업을 결정합니다.
함수는 다음 작업을 수행해야 합니다:
- 만약
to_string이true라면:.to_string()을 사용하여n을 문자열로 변환한 다음, 포함된 숫자 문자의 개수를 셉니다 (마침표.나 마이너스 기호-는 세지 않습니다). 다음 형식으로 출력하세요:Number: [string], Digits: [num of digits]
예를 들어,n = -321.198623인 경우, 문자열 형태는"-321.198623"이며, 9개의 숫자 문자를 가집니다 (-와.는 제외).
힌트:n을 문자열로 변환한 다음,.len()을 사용하고 포함된 각.또는-에 대해 1씩 뺍니다. - 만약
to_string이false라면:.parse()를 사용하여 문자열s를f64로 파싱한 다음, 이를i32로 캐스팅합니다 (소수점 이하 자리는 버려집니다). 다음 형식으로 출력하세요:String as number: [number]
예를 들어,s = "123.67231"인 경우, 출력은String as number: 123입니다.
convert_and_print를 두 번 호출하세요:
- 첫 번째는
to_string을false로 설정하여 호출합니다 — 이 경우 문자열s를 사용하고n은 무시합니다. - 두 번째는
to_string을true로 설정하여 호출합니다 — 이 경우 숫자n을 사용하고s는 무시합니다.
치트 시트
숫자 타입을 문자열로 변환하려면 to_string() 메서드를 사용하세요:
let number = 42;
let number_str = number.to_string();문자열을 숫자 타입으로 변환하려면 parse() 메서드를 사용하세요:
let number_str = "123";
let number: i32 = number_str.parse().unwrap();parse() 메서드는 다양한 숫자 타입과 함께 작동합니다:
let float_str = "3.14";
let float_num: f64 = float_str.parse().unwrap();unwrap() 메서드는 Result에서 값을 추출합니다. 만약 변환에 실패하면 프로그램은 패닉(panic) 상태가 됩니다.
직접 해보기
use std::io;
fn convert_and_print(s: &str, n: f64, to_string: bool) {
// 여기에 코드를 작성하세요
}
fn main() {
let mut input_number_str = String::new();
let mut input_n = String::new();
io::stdin().read_line(&mut input_number_str).unwrap();
io::stdin().read_line(&mut input_n).unwrap();
let n: f64 = input_n.trim().parse().unwrap();
let number_str = input_number_str.trim();
// to_string = false로 convert_and_print 호출
// to_string = true로 convert_and_print 호출
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.