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

如何在Rust中将空格分隔的字符串转换为整数向量?

解决方案

你的代码问题在于逐个处理每个字符,把每个单独的数字字符转换成整数,而没有将空格分隔的连续数字视为一个完整的数。要实现预期效果,需要按空格分割字符串,再将每个分割后的子串解析为整数。

修正后的代码

fn to_vector(s: &str) -> Vec<u32> {
    s.split_whitespace()
        .filter_map(|part| part.parse().ok())
        .collect()
}

fn main() {
    let my_string = "12 34 45";
    let my_vec = to_vector(my_string);
    
    println!("{:?}", my_vec); // 输出: [12, 34, 45]
}

关键说明

  • split_whitespace(): 按任意空白字符(包括多个空格、制表符等)分割字符串,比split(' ')更鲁棒,能处理输入中多余的空格。
  • filter_map(|part| part.parse().ok()): 尝试将每个子串解析为u32,解析失败的部分会被过滤掉(比如非数字字符组成的子串)。
  • collect(): 将解析后的结果收集为Vec<u32>。

关于chunks()的误区

你提到尝试过chunks()方法,这个方法是将字符串按固定长度分割,比如把"123456"分成每2个字符一组。但这种方法不适合处理带空格分隔的字符串,因为空格会打乱字符的分组,而且无法适配不同长度的数字(比如如果有"123 45"这样的输入,固定长度分割就会出错)。只有当输入是无空格的固定长度数字串时,chunks()才适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 09:07:22