我有一个名为Into<String>
的{{1}}变量。我正在尝试从字符串中过滤掉所有非整数,并返回包含字符串中所有整数向量的t_num
。这是我的尝试:
Vec<usize>
问题是我收到了错误
let filter_vec = t_num.into().chars().
filter(|a| a.parse::<usize>()).
collect::<Vec<_>>();
所以问题是char没有实现error: no method named `parse` found for type `&char` in the current scope
filter(|a| a.parse::<usize>()).
,是否有类似于为parse
实现的parse
的方法?
答案 0 :(得分:6)
char
有to_digit
方法,可将字符转换为相应的数字。
fn parse_digits<A: Into<String>>(t_num: A) -> Vec<u32> {
t_num.into().chars().
filter_map(|a| a.to_digit(10)).
collect::<Vec<_>>()
}
fn main() {
println!("{:?}", parse_digits("123asd456")); // prints [1, 2, 3, 4, 5, 6]
}