【问题标题】:How to trim off Newline and Carriage-return from a line read from stdin in Rust? [duplicate]如何从 Rust 中从 stdin 读取的行中删除换行符和回车符? [复制]
【发布时间】:2019-10-09 09:18:45
【问题描述】:

我想从标准输入读取一行并将其存储在字符串变量中,并将字符串值解析为 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);
        }
    }
}

在 Rust 中最惯用的方法是什么?

【问题讨论】:

  • 您也可以使用lines() 迭代器,它会为您修剪换行符。

标签: utf-8 rust newline stdio carriage-return


【解决方案1】:

String 有一个 trim method,它返回一个修剪后的字符串切片:

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);
        }
    }
}

"test" 输入的结果:

[116, 101, 115, 116]
test

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 2021-05-12
    • 1970-01-01
    相关资源
    最近更新 更多