我试图获取系统输入并检查用户是否输入了是或否。我的字符串转换是错误还是什么? if块不会执行。
use std::io;
fn main() {
let mut correct_name = String::new();
io::stdin().read_line(&mut correct_name).expect("Failed to read line");
if correct_name == "y" {
println!("matched y!");
// Do something
} else if correct_name == "n" {
println!("matched n!");
// Do something else
}
}
答案 0 :(得分:12)
我建议使用trim_right_matches
或更好,而不是trim_right
,而不是trim
:
dim rw as variant
with worksheets("Sheet1")
rw = application.match(<value_to_find>, .columns(1), 0) 'column A
if iserror(rw) then
'not found - rw is a worksheet error code
else
'found - rw is a long integer representing the row number
end if
end with
最后一种情况处理许多类型的空白:
返回删除了前导和尾随空格的字符串切片。
'Whitespace'是根据Unicode派生核心属性White_Space的术语定义的。
所以Windows / Linux / macOS无关紧要。
您还可以使用修剪结果的长度来截断原始use std::io;
fn main() {
let mut correct_name = String::new();
io::stdin().read_line(&mut correct_name).expect("Failed to read line");
let correct_name = correct_name.trim();
if correct_name == "y" {
println!("matched y!");
// Do something
} else if correct_name.trim() == "n" {
println!("matched n!");
// Do something else
}
}
,但在这种情况下,您应该只使用String
!
trim_right
答案 1 :(得分:8)
read_line
包含返回字符串中的终止换行符。将.trim_right_matches("\r\n")
添加到correct_name
的定义中,以删除终止换行符。
答案 2 :(得分:2)
您可以使用提供chomp-nl
crate的chomp
function,它返回不带换行符的字符串切片。
如果您希望就地执行此操作,还有一个trait ChompInPlace
。
免责声明:我是这个图书馆的作者。