IT’s Portfolio

[Rust] How to study Rust? - "Copycat" (2) 본문

Development Study/Rust

[Rust] How to study Rust? - "Copycat" (2)

f1r3_r41n 2023. 8. 28. 13:33
728x90
반응형

텍스트 파일 sample.txt 를 열어서 숫자 단어, 알파벳 단어, 기타 단어 등 총 세 종류의 단어 개수를 카운트하여 출력


입력 파일

sample.txt
814 B


소스 코드

use std::{fs, io::Read, error::Error, process};

fn read_file() -> Result<String, Box<dyn Error>> {
    let mut f = fs::File::open("sample.txt")?;
    let mut contents = String::new();
    f.read_to_string(&mut contents)?;

    Ok(contents)
}

fn main() {
    let contents = read_file().unwrap_or_else(
        |err| {
            eprintln!("Error!\n{}", err);
            process::exit(1);
        }
    );
    let split_contents = contents.split_ascii_whitespace().collect::<Vec<&str>>();
    let (mut n, mut a, mut etc) = (0, 0, 0);

    for word in split_contents {
        if let Err(_) = word.parse::<i32>() {
            a+=1;
            for x in word.chars() {
                if !x.is_alphabetic() {
                    etc+=1;
                    a-=1;
                    break;
                }
            }
        } else {
            n+=1;
        }
    }

    println!(
        "Number = {}\nAlphabet = {}\nOther = {}",
        n, a, etc
    );
}

결과

Number = 52
Alphabet = 93
Other = 5

출처

728x90
반응형
Comments