Nic*_*ert 2 string whitespace split rust
我有一个字符串,比如说"dog cat fish",我想将其在第一个空格上分割成两个片段,如下所示:("dog", "cat fish")。
我尝试天真地使用split_once()这样的方法:
let string = "dog cat fish";
let (first_word, rest_of_string) = string.split_once(' ').unwrap();
Run Code Online (Sandbox Code Playgroud)
它对于常规空白字符有效。但是,我希望它也适用于其他类型的 Unicode 空白字符,就像\t该split_whitespace()方法一样。
不过,我不想使用split_whitespace(),因为它返回一个迭代器,我必须在迭代后重新收集并加入单词,因为这会浪费时间:
let mut it = string.split_whitespace();
let first_word = it.next().unwrap();
let rest_of_string = it.collect::Vec<&str>().join(" ");
Run Code Online (Sandbox Code Playgroud)
那么,如果我有一个像 那样的字符串"dog \t cat fish",我该如何分割它以获得这两个切片("dog", "cat fish")?
我也想过使用正则表达式,但是有更好的方法吗?
Dog*_*ert 10
您可以split_once使用一个调用 的函数char::is_whitespace(),但它只会在第一个空格上拆分。然后,您需要&str从头开始修剪第二个。
fn main() {
let string = "dog \t cat fish";
let (a, b) = string.split_once(char::is_whitespace).unwrap();
let b = b.trim_start();
dbg!(a, b);
}
Run Code Online (Sandbox Code Playgroud)
输出:
[src/main.rs:5] a = "dog"
[src/main.rs:5] b = "cat fish"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
497 次 |
| 最近记录: |