[英]How can we Concatenate vector elements before specific separator and make new vector in Rust
I want to to concatenate all 3 elements of vector named 'items' before operator and two elements after operator like this ["2","2","2","+","2","3"] to ["222","+","23"]我想将运算符之前名为“items”的向量的所有 3 个元素和运算符之后的两个元素连接起来,像这样 ["2","2","2","+","2","3"] 到 [ "222","+","23"]
let items = vec!["2","2","2","+","2","3"];
let mut new_items = vec![];
for i in 0..items.len() {
new_items.insert(i, items[i].to_owned());
}
let mut count = 0;
for i in 0..new_items.len() {
if new_items[i] == "+" {}
else {
new_items[i] = format!("{}{}",new_items[i],new_items[i+1]);
new_items.remove(i+1);
count += 1;
}
}
println!("{:?}",new_items);
Maybe something like the following:也许类似于以下内容:
pub fn main() {
let items = vec!["2","2","2","+","2","3"];
// use a number variable to capture the operand
let mut number = String::new();
let mut new_items = vec![];
for s in items {
if s == "+" {
// if found an operator, push and clear the current operand and operator
new_items.push(number.drain(..).collect());
new_items.push(s.to_owned());
} else {
number.push_str(s);
}
}
if !number.is_empty() {
new_items.push(number);
}
println!("{:?}", new_items);
}
the playground . 操场。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.