如何通过第一次出现的分隔符来分割字符串?

Ben*_*ber 6 rust

例如,我有一个文件,其中的行如下所示:

KEY1=value1
KEY2=value2
Run Code Online (Sandbox Code Playgroud)

有时字符串的值部分也包含=字符:

KEY1=value1=thing1
KEY2=value2=thing2
Run Code Online (Sandbox Code Playgroud)

在 Python 中,如果我只想要 KEY=value 对,那么我会这样做:

>>> s = "KEY1=value1=thing1"
>>> key, value = s.split("=", 1)
>>> print(key)
KEY1
>>> print(value)
value1=thing1
Run Code Online (Sandbox Code Playgroud)

在我看来,如何在 Rust 中做到这一点并不明显。

kmd*_*eko 12

使用split_onceSome((before, after))如果分隔符存在则返回,None如果不存在则返回。

fn main() {
    let s = "KEY1=value1=thing1";
    match s.split_once('=') {
        Some((key, value)) => {
            println!("key: {}", key);
            println!("value: {}", value);
        }
        None => {
            println!("expected a key-value pair");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
fn main() {
    let s = "KEY1=value1=thing1";
    match s.split_once('=') {
        Some((key, value)) => {
            println!("key: {}", key);
            println!("value: {}", value);
        }
        None => {
            println!("expected a key-value pair");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)