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 –