package main import ( "fmt" "strings" ) // Package _strings has no case-insensitive version of _Contains, so // we have to make our own. func containsCaseInsensitive(s, word string) bool { lowerS, lowerWord := strings.ToLower(s), strings.ToLower(word) ok := strings.Contains(lowerS...
func containsCaseInsensitive(s, word string) bool { lowerS, lowerWord := strings.ToLower(s), strings.ToLower(word) ok := strings.Contains(lowerS, lowerWord) return ok } func main() { s := "Let's dance the macarena" word := "Dance" ok := containsCaseInsensitive(s, word) fmt....
to_lowercase()会新创建一个 String,contains()方法参数需要的是一个引用。 再次执行测试cargo teset.用例全部通过。逻辑写好了,需要通过增加一个配置来处理是否大小写敏感。 修改结构体定义ingore_case表示来忽略大小写。 pub struct Config { pub search: String, pub file_path: String, pub ignore_case: boo...
接着在Config::new中使用env模块的var方法来检查一个叫做CASE_INSENSITIVE的环境变量,如示例 12-23 所示: 文件名: src/lib.rs use std::env; # struct Config { # query: String, # filename: String, # case_sensitive: bool, # } // --snip-- impl Config { pub fn new(args: &[String]) ->...
在main.rs导入库使用,这个库包括了一个结构体Config,三个方法find\find_insensitive\run use ifun_grep; fn main(){ let search = String::from("let"); let config = ifun_grep::Config { search, file_path: String::from("hello.txt"), ...
pub struct Config { pub query: String, pub filename: String, pub case_sensitive: bool,} 1. 请注意,我们添加了case_sensitive包含布尔值的字段。接下来,我们需要该run函数检查该case_sensitive字段的值,并使用该值来决定是调用该search函数还是调用该 search_case_insensitive函数,如清单12-22所示。请注意,这...
usestd::env;// --snip--implConfig {pubfnnew(args: &[String]) ->Result<Config, &'staticstr> {ifargs.len() <3{returnErr("not enough arguments"); }letquery = args[1].clone();letfilename = args[2].clone();letcase_sensitive = env::var("CASE_INSENSITIVE").is_err();Ok(Config...
{pubfnnew(args: &[String]) ->Result<Config, &'staticstr> {ifargs.len() <3{returnErr("not enough arguments"); }letquery = args[1].clone();letfilename = args[2].clone();letcase_sensitive = env::var("CASE_INSENSITIVE").is_err();Ok(Config { query, filename, case_sensitive }...
接着在 Config::new 中使用 env 模块的 var 方法来检查一个叫做 CASE_INSENSITIVE 的环境变量,如示例 12-23 所示: 文件名: src/lib.rs use std::env; // --snip-- impl Config { pub fn new(args: &[String]) -> Result<Config, &'static str> { if args.len() < 3 { return Err("not ...
回想一下,search函数的目的是返回contents中包含query的所有行。类似于示例 13-16 中的filter示例,此代码使用filter适配器来保留line.contains(query)返回true的行。然后我们使用collect将匹配的行收集到另一个向量中。简单多了!你也可以自由地对search_case_insensitive函数进行相同的更改,使用迭代器方法。