rust 如何使用多个不同的字符作为分隔符拆分字符串?

dy1byipe  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(129)

在(最新的Rust)中,使用多个不同的可能的拆分字符来执行基本和有效的字符串拆分的最常用方法是什么,即转换:

"name, age. location:city"

字符串
进入:

["name", "age", "location", "city"]


我知道我们可以使用regexp来实现这一点,但这段代码将用于日志处理,并且在CPU/内存受限的计算机上使用,因此我希望尽可能避免使用regexp。

fzsnzjdm

fzsnzjdm1#

str::split接受一个通用的分割Pattern,它可以是不同的东西之一。特别是,它可以是一个决定字符是否是一个字符串的闭包,从而给我们完全的控制权,同时允许我们利用char中的帮助函数。

let value = "name, age. location:city";
let parts: Vec<_> = value
    .split(|c: char| c.is_ascii_punctuation() || c.is_ascii_whitespace())
    .filter(|p| !p.is_empty())
    .collect();
assert_eq!(&parts[..], &["name", "age", "location", "city"]);

字符串
Playground
标签:How do I split a string in Rust?

zvms9eto

zvms9eto2#

这将使用您选择的任何一组字符进行拆分,并返回一个字符串数组。

let items = value
    .split(&[' ', ',', ':', '-'])
    .filter(|&r| r != "")
    .map(|r| r.to_string() )
    .collect();

字符串
或者,对于常规字符串:

let items = value
    .split(&[' ', ',', ':', '-', '\t'])
    .filter(|&r| r != "").collect()


Rust Playground

相关问题