Rust如何检索文本文件/变量中的指定关键词关联用户名称
Rust实现文本关键词匹配关联用户名称的操作指南
现有代码问题修正
你当前的代码存在两个会导致运行失败的问题,需要先调整:
- 变量名不匹配:定义了
user_name变量,但读取用户输入时传入的是未定义的name引用,无法通过编译 - 目录不存在的报错:执行
fs::write写入文件前,如果本地没有创建files目录,会直接抛出IO错误
核心功能实现步骤
实现关键词匹配关联展示的逻辑不需要引入第三方依赖,用标准库能力就可以完成,分三个环节:
- 读写存储文件内容:把本地
user_name.txt、user_wish.txt里的内容读到内存的字符串变量中 - 关键词匹配校验:检查读取到的用户愿望文本,是否包含你指定的目标关键词(如
my、name) - 命中关联展示:匹配到对应关键词时,把预先存储的用户名内容展示出来
可直接运行的完整代码
use std::fs; use std::io; fn main() -> io::Result<()> { // 自动创建存储目录,避免写入报错 fs::create_dir_all("files")?; // 收集并存储用户名 let mut user_name = String::new(); println!("Hello what is your name: "); io::stdin().read_line(&mut user_name)?; let user_name = user_name.trim().to_string(); fs::write("files/user_name.txt", &user_name)?; // 收集并存储用户愿望 let mut user_wish = String::new(); println!("What is your wish: "); io::stdin().read_line(&mut user_wish)?; let user_wish = user_wish.trim().to_string(); fs::write("files/user_wish.txt", &user_wish)?; // 配置待匹配的关键词列表 let match_keywords = ["my", "name"]; // 读取本地存储的文本内容 let stored_wish = fs::read_to_string("files/user_wish.txt")?; let stored_name = fs::read_to_string("files/user_name.txt")?; // 检查是否命中任意关键词 let is_keyword_hit = match_keywords.iter() .any(|keyword| stored_wish.contains(keyword)); // 命中后关联展示存储的用户名 if is_keyword_hit { println!("Matched keyword detected, stored user name is: {stored_name}"); } Ok(()) }
实现说明
- 匹配逻辑用了标准库自带的字符串
contains方法,属于子串精确匹配,完全覆盖你提到的检索my、name的基础需求 - 调整了main函数的返回值为
io::Result<()>,可以直接用?运算符简化错误处理,比原代码里零散的unwrap()更稳定,遇到IO错误时会按规范抛出,不会无预兆直接程序崩溃 - 对用户输入的内容做了
trim()处理,去掉读入时自动附带的换行符,避免存储到文件里的内容带多余空行,影响后续匹配和展示效果
内容的提问来源于stack exchange,提问作者Bebe Brož
相关产品推荐
相关产品推荐

