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 次 |
最近记录: |