在(最新的Rust)中,使用多个不同的可能的拆分字符来执行基本和有效的字符串拆分的最常用方法是什么,即转换:
"name, age. location:city"
字符串进入:
["name", "age", "location", "city"]
型我知道我们可以使用regexp来实现这一点,但这段代码将用于日志处理,并且在CPU/内存受限的计算机上使用,因此我希望尽可能避免使用regexp。
fzsnzjdm1#
str::split接受一个通用的分割Pattern,它可以是不同的东西之一。特别是,它可以是一个决定字符是否是一个字符串的闭包,从而给我们完全的控制权,同时允许我们利用char中的帮助函数。
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?
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
2条答案
按热度按时间fzsnzjdm1#
str::split
接受一个通用的分割Pattern
,它可以是不同的东西之一。特别是,它可以是一个决定字符是否是一个字符串的闭包,从而给我们完全的控制权,同时允许我们利用char
中的帮助函数。字符串
Playground的
标签:How do I split a string in Rust?
zvms9eto2#
这将使用您选择的任何一组字符进行拆分,并返回一个字符串数组。
字符串
或者,对于常规字符串:
型
Rust Playground