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
相关产品推荐
相关产品推荐

