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

