如何从 Rust 中的 stdin 读取的行中删除换行符和回车符?

YLy*_*Lyu 6 newline stdio utf-8 carriage-return rust

我想从 stdin 读取一行并将其存储在字符串变量中,并将字符串值解析为 u32 整数值。read_line() 方法读取 2 个额外的 UTF-8 值,这会导致 parse 方法崩溃。

以下是我尝试删除回车符和换行符的内容:

use std::io;
use std::str;

fn main() {
    let mut input = String::new();
    match io::stdin().read_line(&mut input) {
        Ok(n) => {
            println!("{:?}", input.as_bytes());
            println!("{}", str::from_utf8(&input.as_bytes()[0..n-2]).unwrap());
        }
        Err(e) => {
            println!("{:?}", e);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在 Rust 中执行此操作最惯用的方法是什么?

Leś*_*ajs 6

String有一个返回修剪后的字符串切片的trim方法:

use std::io;
use std::str;

fn main() {
    let mut input = String::new();
    match io::stdin().read_line(&mut input) {
        Ok(_) => {
            let trimmed_input = input.trim();
            println!("{:?}", trimmed_input.as_bytes());
            println!("{}", trimmed_input);
        }
        Err(e) => {
            println!("{:?}", e);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输入结果"test"

use std::io;
use std::str;

fn main() {
    let mut input = String::new();
    match io::stdin().read_line(&mut input) {
        Ok(_) => {
            let trimmed_input = input.trim();
            println!("{:?}", trimmed_input.as_bytes());
            println!("{}", trimmed_input);
        }
        Err(e) => {
            println!("{:?}", e);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

6250 次

最近记录:

6 年,9 月 前