3
在学习Rust的练习中,我正在尝试一个简单的程序来接受你的名字,然后打印你的名字,如果它是有效的。如何匹配从标准输入读取的字符串?
只有“Alice”和“Bob”是有效名称。
use std::io;
fn main() {
println!("What's your name?");
let mut name = String::new();
io::stdin().read_line(&mut name)
.ok()
.expect("Failed to read line");
greet(&name);
}
fn greet(name: &str) {
match name {
"Alice" => println!("Your name is Alice"),
"Bob" => println!("Your name is Bob"),
_ => println!("Invalid name: {}", name),
}
}
当我cargo run
这个main.rs
文件,我得到:
What's your name?
Alice
Invalid name: Alice
现在,我的猜测是,因为 “爱丽丝” 是&'static str
型和name
是&str
型的,也许它不匹配正确...
尝试'match name.trim(){...}'。我目前无法测试,但我敢打赌,输入中有一个换行符。 –
就是这样......我总是忘记这一点,谢谢!如果你发布答案,我会赞成并接受。 – sircapsalot
相关,虽然不*完全*重复:https://stackoverflow.com/questions/27201086/comparing-string-in-rust/27201198#27201198 –