如何从 Rust 中从标准输入读取的行中 trim 关闭换行符和 Carriage-return?
How to trim off Newline and Carriage-return from a line read from stdin in Rust?
我想从 stdin 读取一行并将其存储在字符串变量中,并将字符串值解析为 u32 整数值。
read_line() 方法读取了 2 个额外的 UTF-8 值,这会导致 parse 方法崩溃。
以下是我尝试 trim 关闭 Carriage-return 和 Newline 的内容:
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 中最惯用的方法是什么?
String
有一个 trim
method,returns 一个修剪过的字符串切片:
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
我想从 stdin 读取一行并将其存储在字符串变量中,并将字符串值解析为 u32 整数值。 read_line() 方法读取了 2 个额外的 UTF-8 值,这会导致 parse 方法崩溃。
以下是我尝试 trim 关闭 Carriage-return 和 Newline 的内容:
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 中最惯用的方法是什么?
String
有一个 trim
method,returns 一个修剪过的字符串切片:
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