You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust如何按分隔符的第一次出现位置拆分字符串?

Rust 对应实现方案

Rust 字符串内置的 split_once 方法完全可以实现和 Python split("=", 1) 一致的效果,该方法会查找第一个匹配的分隔符,将字符串拆分为前后两部分,返回 Option<(&str, &str)> 类型的结果。

基础用法示例

fn main() {
    let s = "KEY1=value1=thing1";
    // 拆分第一个等号,expect 仅用于示例,实际场景可根据需求做错误处理
    let (key, value) = s.split_once('=').expect("待解析字符串中不存在等号分隔符");
    
    println!("key: {}", key);
    println!("value: {}", value);
}

运行输出:

key: KEY1
value: value1=thing1

旧版本兼容方案

如果你使用的 Rust 版本低于 1.52.0(split_once 从 1.52.0 版本开始加入稳定版),可以用 splitn 方法实现同等效果:

fn main() {
    let s = "KEY1=value1=thing1";
    let mut parts = s.splitn(2, '=');
    let key = parts.next().expect("无有效键");
    let value = parts.next().expect("无有效值");
    
    println!("key: {}", key);
    println!("value: {}", value);
}

批量读取配置文件示例

如果是从文件逐行读取解析键值对,可以参考如下实现:

use std::{fs::File, io::{BufRead, BufReader}};

fn main() -> std::io::Result<()> {
    // 打开目标配置文件
    let file = File::open(".env")?;
    let reader = BufReader::new(file);
    
    for line in reader.lines() {
        let line = line?;
        // 跳过空行和注释行
        if line.trim().is_empty() || line.trim().starts_with('#') {
            continue;
        }
        // 解析键值对
        if let Some((key, value)) = line.split_once('=') {
            // 这里可以做后续的键值对存储、处理逻辑
            println!("{} = {}", key.trim(), value.trim());
        }
    }

    Ok(())
}

内容的提问来源于stack exchange,提问作者Ben Wilber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:18:02