我有一个Rust项目。它的目的是接受两个参数,一个搜索项和一个文件名,并打印文件的内容,其中文件中的搜索项被标记为红色。我如何做到这一点?下面是代码。
use std::env;
use std::fs::File;
use std::io;
use std::io::prelude::*;
use std::process;
fn main() {
let args: Vec<String> = env::args().collect();
let input_args: InputArgs = InputArgs::new(&args).unwrap_or_else(|err| {
println!("Problem parsing arguments: {}", err);
process::exit(1)
});
println!(
"Searching for {:?} in file {:?}.",
input_args.search_term, input_args.file_name
);
run(&input_args);
}
fn run(input_args: &InputArgs) -> io::Result<()> {
let file = File::open(&input_args.file_name)?;
let reader = io::BufReader::new(file);
for line in reader.lines() {
let line = line?;
println!("{}", line);
}
Ok(())
}
struct InputArgs {
search_term: String,
file_name: String,
}
impl InputArgs {
fn new(args: &[String]) -> Result<InputArgs, &str> {
if args.len() < 3 {
return Err("Please enter at least 2 arguments.");
}
let search_term: String = args[1].clone();
let file_name: String = args[2].clone();
return Ok(InputArgs {
search_term,
file_name,
});
}
}
我已经找到了可以为整个字符串着色的库,但没有一个库只能为特定的单词着色。
2条答案
按热度按时间zbsbpyhn1#
大多数给字符串着色的板条箱实际上能够给单个单词着色。以colored为例:
如果你试图构建一个字符串,你也可以使用
format!
而不是println!
来构建实际的字符串,而不是直接输出它,如下所示:sqougxex2#
我已经找到了解决问题的办法。下面是代码。