如何将基于空格(制表符或不均匀空格)的字符串分隔为元组?



我想将空格分隔的文件(可能是制表符或不均匀空格(读入元组:

use std::io::{BufReader, BufRead, Cursor};
fn main() {
let data = "
A       1    Pass
B   2         Fail
C   3       Fail
";
let lines = BufReader::new(Cursor::new(data))
.lines();
for line in lines {
let line_temp = line.unwrap();
let broken_line: Vec<&str> = line_temp.split(" ").collect(); // This works
// I want something like below:
// let (a, b, c) = ("A", 1, "Pass");
println!("{:?}", broken_line);
}
}

我希望a存储第一列,b存储第二列,依此类推。

a = A, b = 1, c = Pass
a = B, b = 2, c = Fail
// ...

假设您的数据格式正确(除了空行(,并且您不必担心验证每一行,那么您可以这样做

fn main() {
let data = "
A       1    Pass
B   2         Fail
C   3       Fail
";
for line in data.lines() {
let line = line.trim();
if line.is_empty() {
continue;
}
let mut parts = line.split_whitespace();
let tuple = (
parts.next().unwrap(),
parts.next().unwrap().parse::<i32>().unwrap(),
parts.next().unwrap(),
);
println!("{:?}", tuple);
}
}

操场

最新更新