You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust开发疑问:猜拳游戏菜单输入的模式匹配不生效怎么办?

问题原因与解决方案

问题根源

io::stdin().read_line(&mut choix) 会将用户输入的内容**连同末尾的换行符(\n)**一并读取到变量中。比如输入singleplayer并回车后,choix的实际值是"singleplayer\n",转小写后依然带有换行符,因此无法匹配"singleplayer"字面量,触发默认分支。

修复方法

在处理输入字符串时,先去除首尾的空白字符(包括换行符),再进行转小写和匹配操作。修改后的代码如下:

io::stdin()
    .read_line(&mut choix)
    .expect("Failed to read line");
// 先去除首尾空白,再转小写
choix = choix.trim().to_lowercase();
match choix.as_str() {
    "singleplayer" => singleplayer(),
    "multiplayer" => multiplayer(),
    _ => println!("Unknown choice, please choose 'singleplayer' or 'multiplayer'"),
}
println!("End of game");

补充说明

  • trim()方法会移除字符串首尾所有空白字符(包括空格、制表符、换行符),能同时处理用户误输入前后空格的情况。
  • 如果只想针对性去除末尾的换行符,也可以使用trim_end()或trim_matches('\n'),但trim()的通用性更强。

内容的提问来源于stack exchange,提问作者DreadFog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 16:54:51