如何使用多个不同的字符作为分隔符在 Rust 中分割字符串?

问题描述 投票:0回答:2

(最新的 Rust)中使用多个不同的可能的分割字符进行基本且有效的字符串分割(即转换)的最生锈/当前的方法是什么:

"name, age. location:city"

进入:

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

我知道我们可以使用正则表达式来执行此操作,但此代码将用于日志处理,并且在受 cpu/内存限制的计算机上使用,因此如果可能的话,我宁愿避免使用正则表达式。

string rust split
2个回答
3
投票

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"]);

游乐场

另请参阅:如何在 Rust 中拆分字符串?


1
投票

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

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

或者,对于常规字符串:

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

铁锈游乐场

© www.soinside.com 2019 - 2024. All rights reserved.