我想按字母顺序排列字符串向量
fn main() {
let mut vec = Vec::new();
vec.push("richard");
vec.push("charles");
vec.push("Peter");
println!("{:?}", vec);
}
我尝试了println!("{:?}", vec.sort());
和println!("{}", vec.sort_by(|a,b| b.cmp(a)));
,两个响应都是()
。
我希望得到以下结果
["charles", "Peter", "richard"]
答案 0 :(得分:4)
sort
函数在切片(以及Vec
,因为它们可以Deref
切片)上定义为pub fn sort(&mut self)
,即在原位执行排序,更改现有数据。因此,要实现您要执行的操作,可以尝试以下操作:
fn main() {
let mut vec = Vec::new();
vec.push("richard");
vec.push("charles");
vec.push("Peter");
vec.sort();
println!("{:?}", vec);
}
不幸的是,这不是您想要的东西,因为此will sort "Peter" before "charles"-字符串的默认比较器区分大小写(实际上,它与区域设置无关,因为它compares basing on Unicode code points) 。因此,如果要执行不区分大小写的排序,请here's the modification:
fn main() {
let mut vec = Vec::new();
vec.push("richard");
vec.push("charles");
vec.push("Peter");
vec.sort_by(|a, b| a.to_lowercase().cmp(&b.to_lowercase()));
println!("{:?}", vec);
}