String 如何进一步处理匹配字符串?
我正在逐行读取一些文件,并希望匹配每一行,以验证它是否包含特定的字符串 到目前为止,我所拥有的:String 如何进一步处理匹配字符串?,string,rust,match,String,Rust,Match,我正在逐行读取一些文件,并希望匹配每一行,以验证它是否包含特定的字符串 到目前为止,我所拥有的: // read file line by line let file = File::open(file_path).expect("Cannot open file"); let buffer = BufReader::new(file); for line in buffer.lines() { // println!("{:?}", line.unwrap()); parse_
// read file line by line
let file = File::open(file_path).expect("Cannot open file");
let buffer = BufReader::new(file);
for line in buffer.lines() {
// println!("{:?}", line.unwrap());
parse_line(line.unwrap());
}
fn parse_line(line: String) {
match line {
(String) if line.contains("foo") => print!("function head"),
_ => print!("function body"),
}
}
这导致:
错误:应为`、`或`@`、找到`)之一`
-->src/main.rs:13:20
|
13 |(字符串)如果line.contains(“foo”)=>打印!(“职能负责人”),
|^此处应为“、”或“@”之一
我是否可以使用match
检查不同的包含字符串,就像在其他情况下使用switch
一样
例如:
fn parse_line(line: String) {
match line {
line.contains("foo") => print!("function foo"),
line.contains("bar") => print!("function bar"),
_ => print!("function body"),
}
}
在
匹配中使用if
,称为:
这不是生锈。Rust中没有这样的语法
use std::fs::File;
use std::io::{self, BufReader, BufRead};
fn main() -> io::Result<()> {
let file_path = "foo.txt";
// read file line by line
let file = File::open(file_path)?;
let reader = BufReader::new(file);
for line in reader.lines() {
parse_line(line?);
}
Ok(())
}
fn parse_line(line: String) {
match &line {
s if s.contains("foo") => print!("contains foo"),
s if s.contains("bar") => print!("contains bar"),
_ => print!("other"),
}
}